Compare commits

..

3 Commits

Author SHA1 Message Date
Zorchenhimer 68e9da7e31
updates from last weekend 2025-11-07 20:33:20 -05:00
Zorchenhimer cab418a9d9
some stuff from a stream the other day 2025-10-31 19:46:34 -04:00
Zorchenhimer 9921ba9b5c
Update handler EB and A9 info 2025-10-26 14:02:52 -04:00
1 changed files with 197 additions and 64 deletions

View File

@ -1,5 +1,4 @@
NesMemory:0000-0001:Word_44F9 NesMemory:0036-0037:Argument_D
NesMemory:0036-0037:Argument_D
NesMemory:2000:PpuControl_2000:7 bit 0\n---- ----\nVPHB SINN\n|||| ||||\n|||| ||++- Base nametable address\n|||| || (0 = $2000; 1 = $2400; 2 = $2800; 3 = $2C00)\n|||| |+--- VRAM address increment per CPU read/write of PPUDATA\n|||| | (0: add 1, going across; 1: add 32, going down)\n|||| +---- Sprite pattern table address for 8x8 sprites\n|||| (0: $0000; 1: $1000; ignored in 8x16 mode)\n|||+------ Background pattern table address (0: $0000; 1: $1000)\n||+------- Sprite size (0: 8x8; 1: 8x16)\n|+-------- PPU master/slave select\n| (0: read backdrop from EXT pins; 1: output color on EXT pins)\n+--------- Generate an NMI at the start of the\n vertical blanking interval (0: off; 1: on) NesMemory:2000:PpuControl_2000:7 bit 0\n---- ----\nVPHB SINN\n|||| ||||\n|||| ||++- Base nametable address\n|||| || (0 = $2000; 1 = $2400; 2 = $2800; 3 = $2C00)\n|||| |+--- VRAM address increment per CPU read/write of PPUDATA\n|||| | (0: add 1, going across; 1: add 32, going down)\n|||| +---- Sprite pattern table address for 8x8 sprites\n|||| (0: $0000; 1: $1000; ignored in 8x16 mode)\n|||+------ Background pattern table address (0: $0000; 1: $1000)\n||+------- Sprite size (0: 8x8; 1: 8x16)\n|+-------- PPU master/slave select\n| (0: read backdrop from EXT pins; 1: output color on EXT pins)\n+--------- Generate an NMI at the start of the\n vertical blanking interval (0: off; 1: on)
NesMemory:2001:PpuMask_2001:7 bit 0\n---- ----\nBGRs bMmG\n|||| ||||\n|||| |||+- Display type: (0: color, 1: grayscale)\n|||| ||+-- 1: Show background in leftmost 8 pixels of screen, 0: Hide\n|||| |+--- 1: Show sprites in leftmost 8 pixels of screen, 0: Hide\n|||| +---- 1: Show background\n|||+------ 1: Show sprites\n||+------- Emphasize red\n|+-------- Emphasize green\n+--------- Emphasize blue NesMemory:2001:PpuMask_2001:7 bit 0\n---- ----\nBGRs bMmG\n|||| ||||\n|||| |||+- Display type: (0: color, 1: grayscale)\n|||| ||+-- 1: Show background in leftmost 8 pixels of screen, 0: Hide\n|||| |+--- 1: Show sprites in leftmost 8 pixels of screen, 0: Hide\n|||| +---- 1: Show background\n|||+------ 1: Show sprites\n||+------- Emphasize red\n|+-------- Emphasize green\n+--------- Emphasize blue
NesMemory:2002:PpuStatus_2002:7 bit 0\n---- ----\nVSO. ....\n|||| ||||\n|||+-++++- Least significant bits previously written into a PPU register\n||| (due to register not being updated for this address)\n||+------- Sprite overflow. The intent was for this flag to be set\n|| whenever more than eight sprites appear on a scanline, but a\n|| hardware bug causes the actual behavior to be more complicated\n|| and generate false positives as well as false negatives; see\n|| PPU sprite evaluation. This flag is set during sprite\n|| evaluation and cleared at dot 1 (the second dot) of the\n|| pre-render line.\n|+-------- Sprite 0 Hit. Set when a nonzero pixel of sprite 0 overlaps\n| a nonzero background pixel; cleared at dot 1 of the pre-render\n| line. Used for raster timing.\n+--------- Vertical blank has started (0: not in vblank; 1: in vblank).\n Set at dot 1 of line 241 (the line *after* the post-render\n line); cleared after reading $2002 and at dot 1 of the\n pre-render line. NesMemory:2002:PpuStatus_2002:7 bit 0\n---- ----\nVSO. ....\n|||| ||||\n|||+-++++- Least significant bits previously written into a PPU register\n||| (due to register not being updated for this address)\n||+------- Sprite overflow. The intent was for this flag to be set\n|| whenever more than eight sprites appear on a scanline, but a\n|| hardware bug causes the actual behavior to be more complicated\n|| and generate false positives as well as false negatives; see\n|| PPU sprite evaluation. This flag is set during sprite\n|| evaluation and cleared at dot 1 (the second dot) of the\n|| pre-render line.\n|+-------- Sprite 0 Hit. Set when a nonzero pixel of sprite 0 overlaps\n| a nonzero background pixel; cleared at dot 1 of the pre-render\n| line. Used for raster timing.\n+--------- Vertical blank has started (0: not in vblank; 1: in vblank).\n Set at dot 1 of line 241 (the line *after* the post-render\n line); cleared after reading $2002 and at dot 1 of the\n pre-render line.
@ -33,6 +32,8 @@ NesMemory:4017:Ctrl2_FrameCtr_4017:Read (NES - input):\n---4 3210\nRead data fro
NesMemory:4200:SBX_4200_DataAndRAM:Read tape data byte.\nWrite for RAM banks.\n\n7 bit 0\n---- ----\nAA.. .BBB\n|||| ||||\n|||| |+++- Select RAM bank mapped to $5000\n||++-+---- Unused\n++-------- Select RAM bank mapped to $6000 NesMemory:4200:SBX_4200_DataAndRAM:Read tape data byte.\nWrite for RAM banks.\n\n7 bit 0\n---- ----\nAA.. .BBB\n|||| ||||\n|||| |+++- Select RAM bank mapped to $5000\n||++-+---- Unused\n++-------- Select RAM bank mapped to $6000
NesMemory:4201:SBX_4201_RomAndTape:Read for tape status:\n\n7 bit 0\n---- ----\nABCD ....\n|||| ||||\n|||| ++++- Unused\n|||+------ Unknown\n||+------- Set when in data region during seek??\n|+-------- tape data synched? current data bit? something else??\n+--------- Something to do with $4202.0? decoder disabeld? decoder data ready?\n\nWrite for ROM bank:\n\n7 bit 0\n---- ----\n.... AAAA\n|||| ||||\n|||| ++++- Select 16k ROM bank at $8000-$BFFF\n++++------ Unused NesMemory:4201:SBX_4201_RomAndTape:Read for tape status:\n\n7 bit 0\n---- ----\nABCD ....\n|||| ||||\n|||| ++++- Unused\n|||+------ Unknown\n||+------- Set when in data region during seek??\n|+-------- tape data synched? current data bit? something else??\n+--------- Something to do with $4202.0? decoder disabeld? decoder data ready?\n\nWrite for ROM bank:\n\n7 bit 0\n---- ----\n.... AAAA\n|||| ||||\n|||| ++++- Select 16k ROM bank at $8000-$BFFF\n++++------ Unused
NesMemory:4202:SBX_4202_TapeCtrl:Read for status:\n\n7 bit 0\n---- ----\n.A.. B...\n|||| ||||\n|||| |+++- Unused\n|||| +---- Power supply not connected (unused on SBX-1)\n||++------ Unused\n|+-------- Shift register ready for next bit? (tape ready?)\n+--------- Unused\n\nWrite for control:\n\n7 bit 0\n---- ----\nA?BC ?DEF\n|||| ||||\n|||| |||+- Data decoding enable?\n|||| ||+-- IRQ enable?\n|||| |+--- Maybe tape audio enable??\n|||| +---- Unknown\n|||+------ Pulse low to clock data bit\n||+------- Pulse low to reset drive controller?\n|+-------- Unknown\n+--------- Output data bit NesMemory:4202:SBX_4202_TapeCtrl:Read for status:\n\n7 bit 0\n---- ----\n.A.. B...\n|||| ||||\n|||| |+++- Unused\n|||| +---- Power supply not connected (unused on SBX-1)\n||++------ Unused\n|+-------- Shift register ready for next bit? (tape ready?)\n+--------- Unused\n\nWrite for control:\n\n7 bit 0\n---- ----\nA?BC ?DEF\n|||| ||||\n|||| |||+- Data decoding enable?\n|||| ||+-- IRQ enable?\n|||| |+--- Maybe tape audio enable??\n|||| +---- Unknown\n|||+------ Pulse low to clock data bit\n||+------- Pulse low to reset drive controller?\n|+-------- Unknown\n+--------- Output data bit
NesMemory:44F9-44FA:Word_44F9
NesMemory:44FB-44FC:Word_44FB
NesMemory:6000-6001:ScriptStackAddr:The first two bytes of a\nscript always point to the\nstart of the script's stack. NesMemory:6000-6001:ScriptStackAddr:The first two bytes of a\nscript always point to the\nstart of the script's stack.
NesPrgRom:0000:Handler_FE_DrawCharacter:\nDraws a character from the SBX ROM's\ncharset. NesPrgRom:0000:Handler_FE_DrawCharacter:\nDraws a character from the SBX ROM's\ncharset.
NesPrgRom:0022:L0022 NesPrgRom:0022:L0022
@ -172,7 +173,7 @@ NesPrgRom:0DAC:LCDAC
NesPrgRom:0DD9:LCDD9_Multiply_8to16:\nByte_06C8 * Byte_06C9\n= Word_06CE NesPrgRom:0DD9:LCDD9_Multiply_8to16:\nByte_06C8 * Byte_06C9\n= Word_06CE
NesPrgRom:0DE2:L0DE2_loop NesPrgRom:0DE2:L0DE2_loop
NesPrgRom:0DEB:L0DEB NesPrgRom:0DEB:L0DEB
NesPrgRom:0DF8:LCDF8_StringShenanigans NesPrgRom:0DF8:LCDF8_Bin2DecString_disabled:\nThis code seems to be disabled. If\nByte_0607 != 1, return early.\n\nHowever, Byte_0607 is only written\nonce in the reset routine with $00.\n\nIf this code were used, it takes the\nbinary value in Byte_ED and converts\nit to ASCII decimal in String_0700.\nThe value is only two digits.
NesPrgRom:0E00:L0E00 NesPrgRom:0E00:L0E00
NesPrgRom:0E1D:LCE1D_loop NesPrgRom:0E1D:LCE1D_loop
NesPrgRom:0E2A:LCE2A NesPrgRom:0E2A:LCE2A
@ -237,16 +238,54 @@ NesPrgRom:13C7:LD3C7
NesPrgRom:13DC:LD3DC_loop NesPrgRom:13DC:LD3DC_loop
NesPrgRom:13EA:LD3EA NesPrgRom:13EA:LD3EA
NesPrgRom:1403:LD403_end NesPrgRom:1403:LD403_end
NesPrgRom:1649:Handler_A1
NesPrgRom:164B::ArgA >= 15?
NesPrgRom:1667::byte 1 - rom data bank
NesPrgRom:166D::\nbyte 2&3 are the data source for\na screen to draw.
NesPrgRom:1678::byte 5 - tile count
NesPrgRom:167E::byte 7 - source addr low
NesPrgRom:1684::byte 8 - source addr high
NesPrgRom:168A::byte 4 - rom data bank
NesPrgRom:16BA:L16BA_LoadMetadata:\nLoads data from a table.\nTable is 15 elements long, each element\nis 8 bytes.
NesPrgRom:16C2::\nArgA (Y) index -> offset
NesPrgRom:16D1:
NesPrgRom:1703:L1703_WeirdPointerMath:byte 2
NesPrgRom:1708::byte_61
NesPrgRom:170A::byte 3
NesPrgRom:1711::\nWord_96 -= 1\n(source addr ($4722.W) - 1)
NesPrgRom:171E::byte_61
NesPrgRom:1722:
NesPrgRom:1726::byte_61
NesPrgRom:172B::byte_61
NesPrgRom:1733::\nWrite $4722.W + 6 to $697E.W
NesPrgRom:1742::\nRead four bytes from ($4722.W)\n(bytes 2&3 from metadata)
NesPrgRom:1746::width?
NesPrgRom:174B::height?
NesPrgRom:174D:
NesPrgRom:1757::\nnumber of tiles (width * height)
NesPrgRom:176E::\n$61.W += above result\n
NesPrgRom:177B:
NesPrgRom:177C::hardcoded to $FE above
NesPrgRom:1788:
NesPrgRom:1796:L1796_WriteTiles:\nWrites tiles to the PPU.\nByte_06C0 - number of tiles.\nWord_0724+0 - Tile ID\nWord_0745 - Base Dest Addr (ie, $0000 or $1000).\nWord_06BC - Data Source Addr
NesPrgRom:17A8::tile ID?
NesPrgRom:17B0:L17B0 NesPrgRom:17B0:L17B0
NesPrgRom:17CC:L17CC NesPrgRom:17CC:L17CC_loop
NesPrgRom:17E7:L17E7 NesPrgRom:17E7:L17E7_loop
NesPrgRom:17F1::\nSource Addr += 16 bytes
NesPrgRom:1802::\nDest PPU Addr += 16 bytes
NesPrgRom:1813:
NesPrgRom:181B::\ntile ID rolled over.\nReset the PPU address to tile ID 4\nwith the current Base Addr.\n(Wrap to the top of the current tile\nbank, skipping the first four tiles)
NesPrgRom:183D:L183D NesPrgRom:183D:L183D
NesPrgRom:184E:LD84E NesPrgRom:184E:LD84E_DrawScreen:\nSeen drawing a full nametable using\ndata from ROM and tape.
NesPrgRom:1851:LD851 NesPrgRom:1851:LD851
NesPrgRom:1868:LD868 NesPrgRom:1868:LD868
NesPrgRom:1872:LD872 NesPrgRom:1872:LD872
NesPrgRom:187C:LD87C NesPrgRom:187C:LD87C
NesPrgRom:188C:LD88C_PointerShenanigans NesPrgRom:188C:LD88C_VarShuffle:\nMoves some vars around:\n\nWord_96 -> Pointer_83 (from metadata earlier on)\nPointer_83 += 1\n$697E.W -> $85.W tile data\n$6AFE.W -> $87.W attribute data
NesPrgRom:1894:
NesPrgRom:18A1::\ntile data
NesPrgRom:18AB::\nAttribute data
NesPrgRom:18E0:LD8E0_SetNT_00 NesPrgRom:18E0:LD8E0_SetNT_00
NesPrgRom:18EB:LD8EB_SetNT_01 NesPrgRom:18EB:LD8EB_SetNT_01
NesPrgRom:18F6:LD8F6_SetNT_02 NesPrgRom:18F6:LD8F6_SetNT_02
@ -260,8 +299,13 @@ NesPrgRom:1959:LD959_Pointer83_HeaderCopy:\nReads data via Pointer_83,\nwrites t
NesPrgRom:195B:L195B_loop NesPrgRom:195B:L195B_loop
NesPrgRom:196C:LD96C_Pointer83_PixelToTile:\nTakes pixel coords an converts to\ntile coords?\n\nData at (Pointer_83) is the header\nfor nametable data in RAM. NesPrgRom:196C:LD96C_Pointer83_PixelToTile:\nTakes pixel coords an converts to\ntile coords?\n\nData at (Pointer_83) is the header\nfor nametable data in RAM.
NesPrgRom:196E:L196E_loop NesPrgRom:196E:L196E_loop
NesPrgRom:1978::\nByte_6A /= 8
NesPrgRom:197F::\nByte_6B /= 8
NesPrgRom:1987:LD987_ArgSwap:\nSwap ArgA+1 with Byte_6A\nSwap ArgB+1 with Byte_6B NesPrgRom:1987:LD987_ArgSwap:\nSwap ArgA+1 with Byte_6A\nSwap ArgB+1 with Byte_6B
NesPrgRom:199A:LD99A_CopySomethingTo0777 NesPrgRom:199A:LD99A_BufferTo0777:\nCopies PPU data to a buffer.
NesPrgRom:199C::\nload the pixel coords and divide\nby 8 to get tile coords (again).
NesPrgRom:19AD:
NesPrgRom:19B6::\nload width from header data
NesPrgRom:19BD::\nWord_81 = Byte_06CC * Word_06CA.Low NesPrgRom:19BD::\nWord_81 = Byte_06CC * Word_06CA.Low
NesPrgRom:19D6::\nWord_81 += (Byte_6A - Word_06CA.High) NesPrgRom:19D6::\nWord_81 += (Byte_6A - Word_06CA.High)
NesPrgRom:19E7::\nWord_81 += Array_85 NesPrgRom:19E7::\nWord_81 += Array_85
@ -270,6 +314,7 @@ NesPrgRom:19FF::ensure data ends with a null
NesPrgRom:1A03:LDA03_loop NesPrgRom:1A03:LDA03_loop
NesPrgRom:1A0C:LDA0C NesPrgRom:1A0C:LDA0C
NesPrgRom:1A31:LDA31 NesPrgRom:1A31:LDA31
NesPrgRom:1A3B:
NesPrgRom:1A41::\nWord_81 = Word_06CA.High * 8 NesPrgRom:1A41::\nWord_81 = Word_06CA.High * 8
NesPrgRom:1A59::\nWord_81 += Word_87 NesPrgRom:1A59::\nWord_81 += Word_87
NesPrgRom:1A66: NesPrgRom:1A66:
@ -282,7 +327,7 @@ NesPrgRom:1AE4:LDAE4
NesPrgRom:1AF7:L1AF7 NesPrgRom:1AF7:L1AF7
NesPrgRom:1B12:L1B12_loop NesPrgRom:1B12:L1B12_loop
NesPrgRom:1B1C:L1B1C NesPrgRom:1B1C:L1B1C
NesPrgRom:1B34:LDB34_BufferSomePPUStuff:\nBuffers some PPU data and\nwaits for NMI to draw it. NesPrgRom:1B34:LDB34_BufferAndWrite_PPU:\nBuffers some PPU data and\nwaits for NMI to draw it.
NesPrgRom:1B3A::\nvertical PPU increment NesPrgRom:1B3A::\nvertical PPU increment
NesPrgRom:1B4D:L1B4D:\nhorizontal PPU increment NesPrgRom:1B4D:L1B4D:\nhorizontal PPU increment
NesPrgRom:1B5D:LDB5D NesPrgRom:1B5D:LDB5D
@ -294,36 +339,46 @@ NesPrgRom:1BB1:LDBB1
NesPrgRom:1BB3:LDBB3 NesPrgRom:1BB3:LDBB3
NesPrgRom:1BB8:L1BB8 NesPrgRom:1BB8:L1BB8
NesPrgRom:1BC3::\nSet NMI action to write PPU\ndata, then wait for it to\nexecute. NesPrgRom:1BC3::\nSet NMI action to write PPU\ndata, then wait for it to\nexecute.
NesPrgRom:1BD4:LDBD4 NesPrgRom:1BD4:LDBD4_UpdateAttrData:\nSomething with updating attribute\ndata with data from the tape's\nimage.
NesPrgRom:1BDE:
NesPrgRom:1BE4:
NesPrgRom:1BFC:
NesPrgRom:1C09:
NesPrgRom:1C11:
NesPrgRom:1C1B:
NesPrgRom:1C1F:
NesPrgRom:1C25:
NesPrgRom:1C2B:
NesPrgRom:1C33:L1C33 NesPrgRom:1C33:L1C33
NesPrgRom:1C39:L1C39 NesPrgRom:1C39:L1C39
NesPrgRom:1C3E:L1C3E_loop NesPrgRom:1C3E:L1C3E_loop
NesPrgRom:1C50:L1C50 NesPrgRom:1C50:L1C50
NesPrgRom:1C57:L1C57 NesPrgRom:1C57:L1C57
NesPrgRom:1C94:LDC94 NesPrgRom:1C94:L1C94_OR_AttrtData:\nOR's tiles atttribute data onto\nthe existing attribute table?
NesPrgRom:1CB0:L1CB0 NesPrgRom:1CAD:
NesPrgRom:1CB0:L1CB0_loop
NesPrgRom:1CC2:L1CC2 NesPrgRom:1CC2:L1CC2
NesPrgRom:1CD4:LDCD4_BufferPPUData:Buffers some PPU data using\ntables in the HW stack.\n\nAlways Attribute data? NesPrgRom:1CD4:LDCD4_BufferPPUData:Buffers some PPU data using\ntables in the HW stack.\n\nAlways Attribute data?
NesPrgRom:1CD6::horizontal drawing NesPrgRom:1CD6::horizontal drawing
NesPrgRom:1CF0:L1CF0 NesPrgRom:1CF0:L1CF0
NesPrgRom:1D11:L1D11 NesPrgRom:1D11:L1D11
NesPrgRom:1D2B:LDD2B NesPrgRom:1D2B:LDD2B_LoadSpritePaletteData
NesPrgRom:1D2D:L1D2D NesPrgRom:1D2D:L1D2D
NesPrgRom:1D35:L1D35 NesPrgRom:1D35:L1D35
NesPrgRom:1D44:LDD44_CopyPaletteToBuffer:\nCopies palette data from the tape\ndata buffer (Pointer_9A) to a\npalette buffer at $0610 NesPrgRom:1D44:LDD44_CopyPaletteToBuffer:\nCopies palette data from the tape\ndata buffer (Pointer_9A) to a\npalette buffer at $0610.\n\nReplaces #$3D with #$0F in the data.
NesPrgRom:1D46:L1D46 NesPrgRom:1D46:L1D46
NesPrgRom:1D4E:L1D4E NesPrgRom:1D4E:L1D4E
NesPrgRom:1D5A:LDD5A_PaletteBgCopy:\nCopies the background colors \nfrom one palette to the other NesPrgRom:1D5A:LDD5A_PaletteBgCopy:\nCopies the background colors from\nthe background palettes to the\nsprite palettes.
NesPrgRom:1D5C:L1D5C NesPrgRom:1D5C:L1D5C
NesPrgRom:1D6B:LDD6D_PpuBuffer:\nBuffering data at $610 to the\nPPU data buffer at 305 NesPrgRom:1D6B:L1D6D_BufferAndWritePalData:\nBuffers and writes palette data to\n$3F00. Data is sourced from $0610.
NesPrgRom:1D7F:L1D7F NesPrgRom:1D7F:L1D7F
NesPrgRom:1D90:L1D90 NesPrgRom:1D90:L1D90_WriteFourTiles:\nBuffers and draws four tiles. Tiles\nare loaded in pairs. Because reasons.\n\nWord_0745 is the initial destination address.
NesPrgRom:1DA2:L1DA2_loop NesPrgRom:1DA2:L1DA2_loop
NesPrgRom:1DB6:L1DB6_loop NesPrgRom:1DB6:L1DB6_loop
NesPrgRom:1DE2:L1DE2 NesPrgRom:1DE2:L1DE2
NesPrgRom:1F37-1F76:Table_DF37:maybe 64 bytes? NesPrgRom:1F37-1F76:Table_DF37:maybe 64 bytes?
NesPrgRom:1F7A-2177:Table_1F78 NesPrgRom:1F7A-2177:Table_1F78
NesPrgRom:2178-224D:Table_2178 NesPrgRom:21D5-224C:Table_21D5:15 entries of 8 bytes each.
NesPrgRom:2300:L2300_LoadScreen:\nScreen ID in A\nSaves current bank, swaps to the screen's bank, writes\ntile data, and finally writes pattern data. NesPrgRom:2300:L2300_LoadScreen:\nScreen ID in A\nSaves current bank, swaps to the screen's bank, writes\ntile data, and finally writes pattern data.
NesPrgRom:2319:L2319_LoadTileData_Shifted:\nShift A three times and TAX before dropping into\nL2323_LoadTileData NesPrgRom:2319:L2319_LoadTileData_Shifted:\nShift A three times and TAX before dropping into\nL2323_LoadTileData
NesPrgRom:2323:L2323_LoadTileData:\nLooks like this loads up a screen using a lookup table for\nthe bank and data address. It shuffles around a bunch\nof pointers. NesPrgRom:2323:L2323_LoadTileData:\nLooks like this loads up a screen using a lookup table for\nthe bank and data address. It shuffles around a bunch\nof pointers.
@ -375,7 +430,7 @@ NesPrgRom:2718:L2718
NesPrgRom:271B:L271B_FrameWait_JMP:\nJMP's to L2BFC.\nWhy not just JSR to that address directly? NesPrgRom:271B:L271B_FrameWait_JMP:\nJMP's to L2BFC.\nWhy not just JSR to that address directly?
NesPrgRom:2721:L2721_TurnOnNMI_LongJump NesPrgRom:2721:L2721_TurnOnNMI_LongJump
NesPrgRom:2724:L2724_TurnOffNMI_LongJump NesPrgRom:2724:L2724_TurnOffNMI_LongJump
NesPrgRom:2727:L2727 NesPrgRom:2727:L2727_ShuffleRngMaybe_LongJump
NesPrgRom:272D:L272D NesPrgRom:272D:L272D
NesPrgRom:2733:L2733_WriteScroll_LongJmp NesPrgRom:2733:L2733_WriteScroll_LongJmp
NesPrgRom:2739:L2739:\nJust JMP's to L3513.\nAgain, why not just JSR to the label directly? NesPrgRom:2739:L2739:\nJust JMP's to L3513.\nAgain, why not just JSR to the label directly?
@ -577,7 +632,8 @@ NesPrgRom:31F6:LF1F6
NesPrgRom:3209:L3209 NesPrgRom:3209:L3209
NesPrgRom:3214:L3214 NesPrgRom:3214:L3214
NesPrgRom:321A:L321A NesPrgRom:321A:L321A
NesPrgRom:325E:L325E NesPrgRom:325E:L325E:\nOpcode 0xDF is waiting for thes to\nbecome zero.
NesPrgRom:326C::\nOpcode $9D is waiting on this to\nbecome zero again.
NesPrgRom:3280:L3280 NesPrgRom:3280:L3280
NesPrgRom:3285:L3285 NesPrgRom:3285:L3285
NesPrgRom:3297:L3297 NesPrgRom:3297:L3297
@ -607,7 +663,7 @@ NesPrgRom:342B::\nIncrement pointer to next PPU row?
NesPrgRom:343C::\nInsert NULL terminator NesPrgRom:343C::\nInsert NULL terminator
NesPrgRom:3442:L3442_Idk:\nCMP's X+1 to data at $0300.\nIf less than, RTS.\nOtherwise store $00 at $0302+X, where\nX = data at $301. Then discard the top\ntwo values on the stack. NesPrgRom:3442:L3442_Idk:\nCMP's X+1 to data at $0300.\nIf less than, RTS.\nOtherwise store $00 at $0302+X, where\nX = data at $301. Then discard the top\ntwo values on the stack.
NesPrgRom:3455:L3455_RTS NesPrgRom:3455:L3455_RTS
NesPrgRom:3456:L3456:\nhuh? NesPrgRom:3456:L3456_ShuffleRngMaybe:\nhuh?
NesPrgRom:3466:L3466_loop NesPrgRom:3466:L3466_loop
NesPrgRom:346D:L346D_WriteSprites NesPrgRom:346D:L346D_WriteSprites
NesPrgRom:3490:Read_Controllers NesPrgRom:3490:Read_Controllers
@ -1061,17 +1117,38 @@ NesPrgRom:4D9D:L8D9D_middle_loop
NesPrgRom:4DBD:L8DBD_loop NesPrgRom:4DBD:L8DBD_loop
NesPrgRom:4DDF:L8DDF NesPrgRom:4DDF:L8DDF
NesPrgRom:4E1F:L8E1F NesPrgRom:4E1F:L8E1F
NesPrgRom:4E2A:L8E2A_PointerShenanigans:\nAdd a pointer to the data it points\nto, store result in Pointer_9A.\nWord_96 is another pointer output.\n\nDepending on if ZERO is set, source\npointer is either $5000 (Z unset) or\n$5400 (Z set). NesPrgRom:4E2A:L8E2A_PointerShenanigans:\nAdd a pointer to the data it points\nto, store result in Pointer_9A.\nWord_96 is another pointer output.\n\nDepending on if ZERO is set, source\npointer is either $5000 (Z unset) or\n$5400 (Z set).\n\nSets Pointer_9A to some palette data.
NesPrgRom:4E2E::always branch NesPrgRom:4E2E::always branch
NesPrgRom:4E30:L8E30 NesPrgRom:4E30:L8E30
NesPrgRom:4E32:L8E32 NesPrgRom:4E32:L8E32
NesPrgRom:4E63:L8E63 NesPrgRom:4E42::\nOffset to palette data?
NesPrgRom:4E87:L4E87 NesPrgRom:4E4D::\nWord_52 += Word_56
NesPrgRom:4E99:L4E99 NesPrgRom:4E5A::\npointer to palette data?
NesPrgRom:4F17:L4F17 NesPrgRom:4E62:
NesPrgRom:4E63:L8E63_GetDataPointers:\nInput is Word_96 - points to data header\n\nPointers to the tile data for\neach image are written to a table\nat $6800.\n\nPointers to the attribute data for\neach image are written to a table\nat $6890.
NesPrgRom:4E68::image count
NesPrgRom:4E6A::\nWord_61 = Word_96
NesPrgRom:4E72::\nWord_61 += 1
NesPrgRom:4E7F::\nPointer_63 = Word_61
NesPrgRom:4E87:L4E87_loop:\nAdvance Word_61 to the start of the\ndata after the header.
NesPrgRom:4E97:
NesPrgRom:4E99:L4E99_ReadLoop
NesPrgRom:4EA6::\n???????
NesPrgRom:4EAA::\nread dimensions from header
NesPrgRom:4EB5::\nWord_67 = data W*H
NesPrgRom:4ECC::\nWord_61 += Word_67
NesPrgRom:4ED9:
NesPrgRom:4EE9:
NesPrgRom:4EF4::\nWord_61 += Word_67
NesPrgRom:4F01::\nPointer_63 += 6
NesPrgRom:4F0E:
NesPrgRom:4F17:L4F17_rts
NesPrgRom:4F18:L8F18_rts NesPrgRom:4F18:L8F18_rts
NesPrgRom:4F19:L8F19 NesPrgRom:4F19:L8F19_LoadHeaderData:\nLoads header information from tape\ndata loaded into $5000 or $5400.\n\nPointer_63 is the data start\n\n$697E address for tile data\n$6AFE address for attribute data
NesPrgRom:4F1B::load loop counter for later NesPrgRom:4F1B::load loop counter for later
NesPrgRom:4F20:
NesPrgRom:4F28:
NesPrgRom:4F35:
NesPrgRom:4F3D:L8F3D_loop NesPrgRom:4F3D:L8F3D_loop
NesPrgRom:4F4F:L8F4F_loop NesPrgRom:4F4F:L8F4F_loop
NesPrgRom:4F53::$697E NesPrgRom:4F53::$697E
@ -1079,6 +1156,10 @@ NesPrgRom:4F59::$697F
NesPrgRom:4F6B::A NesPrgRom:4F6B::A
NesPrgRom:4F70::B NesPrgRom:4F70::B
NesPrgRom:4F75::Word_06CE = A * B NesPrgRom:4F75::Word_06CE = A * B
NesPrgRom:4F82::\nadd result to Word_61
NesPrgRom:4F8F::Word_61 is now data length\n
NesPrgRom:4FAC:
NesPrgRom:4FB9:
NesPrgRom:4FCF:L8FCF_rts NesPrgRom:4FCF:L8FCF_rts
NesPrgRom:4FD0:Handler_DC:something to do with the\nlower 3 bits in the arguments\nand words 34 and 36 NesPrgRom:4FD0:Handler_DC:something to do with the\nlower 3 bits in the arguments\nand words 34 and 36
NesPrgRom:4FE5:L8FE5_gt NesPrgRom:4FE5:L8FE5_gt
@ -1116,34 +1197,62 @@ NesPrgRom:5115:L9115_TurnOnBG
NesPrgRom:511F:L911F_WaitLoop:\nWord_6D - Word_B1, looped\nwhile positive result in\nlow byte.\nResult isn't saved. NesPrgRom:511F:L911F_WaitLoop:\nWord_6D - Word_B1, looped\nwhile positive result in\nlow byte.\nResult isn't saved.
NesPrgRom:512B:Handler_9D_SomethingTape NesPrgRom:512B:Handler_9D_SomethingTape
NesPrgRom:5133:L9133 NesPrgRom:5133:L9133
NesPrgRom:514A:L914A NesPrgRom:514A:L914A:\nArgB != 0
NesPrgRom:5155:L9155 NesPrgRom:5155:L9155:\nWait for data to finish being read\nfrom the tape.\n\nSet $44F8, ArgA to 1 and wait for\nthe IRQ to set this back to 0.
NesPrgRom:5161:L9161_WaitLoop NesPrgRom:5161:L9161_WaitLoop
NesPrgRom:5177::\nJump into the code for Opcode $9D\nafter all the opcode specific stuff\nand draw a screen.
NesPrgRom:517A:Handler_9E_DrawAndShowScreen:\nDraw and show a full screen from\ntape data. This includes sprites. NesPrgRom:517A:Handler_9E_DrawAndShowScreen:\nDraw and show a full screen from\ntape data. This includes sprites.
NesPrgRom:519D:L919D NesPrgRom:519D:L919D
NesPrgRom:51AF:L91AF NesPrgRom:51AF:L91AF
NesPrgRom:51BE::array index and bank info?
NesPrgRom:51F0:L91F0 NesPrgRom:51F0:L91F0
NesPrgRom:5231:L9231 NesPrgRom:5231:L9231
NesPrgRom:523F:L923F NesPrgRom:523F:L923F
NesPrgRom:52D1:Handler_DF:\nDoes something with strings?\nPossibly drawing them? NesPrgRom:52B5:L52B5
NesPrgRom:52D1:Handler_DF_DrawImage:\nDraws an image from RAM on top of\nthe current nametable. Seen using\ndata from the tape.\n\nArgB: X Coord (in tiles)\nArgC: Y Coord (in tiles)
NesPrgRom:52E1:Handler_8B:\nDoes something with strings?\nPossibly drawing them? NesPrgRom:52E1:Handler_8B:\nDoes something with strings?\nPossibly drawing them?
NesPrgRom:52EC:L92EC NesPrgRom:52EC:L92EC
NesPrgRom:52F4:L92F4 NesPrgRom:52F4:L92F4
NesPrgRom:52FF:L92FF NesPrgRom:52FF:L92FF
NesPrgRom:5312:L9312_WaitLoop NesPrgRom:5312:L9312_WaitLoop:\nthis is reset in IRQ
NesPrgRom:5317:
NesPrgRom:5327:
NesPrgRom:532D:
NesPrgRom:5345::\nWord_06BC = Word_459E
NesPrgRom:5351::\nWord_06BC -= #$5000
NesPrgRom:535A::\nWord_06BC /= 16
NesPrgRom:535C:L935C_loop NesPrgRom:535C:L935C_loop
NesPrgRom:53CC:L96CC:\nTile vs Pixel coords? NesPrgRom:5365:
NesPrgRom:53A2::\nArgA = ArgB\nArgB = ArgC
NesPrgRom:53B5:L53B5
NesPrgRom:53CC:L56CC_CoordTranslate:\nTile vs Pixel coords?\n\nScript coords are in tiles, tape\ncoords are in pixels.
NesPrgRom:53D5:
NesPrgRom:53DC: NesPrgRom:53DC:
NesPrgRom:53EC:L93EC_PointerShenanigans NesPrgRom:53E4:
NesPrgRom:5416:L5416 NesPrgRom:53EC:L93EC_PointerShenanigans_Array85Load:\nLoads the first set of pointers to\ndata and attributes into Array_85
NesPrgRom:5495:L5495 NesPrgRom:53F4::\nPointer_83 += 1
NesPrgRom:5401:
NesPrgRom:540B:
NesPrgRom:5416:L5416_TranslateTileIds:\nOffset tile ID from tape to real\nID. There may have been other tile\ndata already loaded, but the tape\ndata assumes this tile data is the\nonly thing loaded.
NesPrgRom:541C:L541C_ImageLoop
NesPrgRom:5420::\nget pointer to start of data
NesPrgRom:542A::\nget data dimensions
NesPrgRom:5435:
NesPrgRom:544D:
NesPrgRom:544F:L544F_loop
NesPrgRom:5453::\ndon't update tiles whose ID < 4.\nthese are static uniform tiles
NesPrgRom:5461:L5461
NesPrgRom:546F::tile count
NesPrgRom:5477:
NesPrgRom:5491:L5491_Done
NesPrgRom:5495:L5495_GotoNextNametable
NesPrgRom:549A:L549A NesPrgRom:549A:L549A
NesPrgRom:54AF:L54AF NesPrgRom:54AF:L54AF
NesPrgRom:54BF:L54BF NesPrgRom:54BF:L54BF
NesPrgRom:54C8:L54C8 NesPrgRom:54C8:L54C8
NesPrgRom:54D8:L54D8 NesPrgRom:54D8:L54D8
NesPrgRom:5512:L5512 NesPrgRom:5512:L5512
NesPrgRom:5521:L9521_WeirdInc_Word4E NesPrgRom:5521:L9521_WeirdInc_Word4E:\nLooks like bank stuff?
NesPrgRom:552C:L552C NesPrgRom:552C:L552C
NesPrgRom:5530:L9530_ClearTables:Uses Pointer_50 and fills a\npage with #$FF. Then fill\na bunch of seemingly random\npages in ram with #$00. Some\nfull pages, others half or\nquarter pages.\n\nSeen filling at $6000. NesPrgRom:5530:L9530_ClearTables:Uses Pointer_50 and fills a\npage with #$FF. Then fill\na bunch of seemingly random\npages in ram with #$00. Some\nfull pages, others half or\nquarter pages.\n\nSeen filling at $6000.
NesPrgRom:553C:L553C_loop NesPrgRom:553C:L553C_loop
@ -1229,19 +1338,35 @@ NesPrgRom:5872::set to 1 if not already 1
NesPrgRom:5880:L9880 NesPrgRom:5880:L9880
NesPrgRom:5889:L9889_WritePPUData:\nBuffer then write PPU data NesPrgRom:5889:L9889_WritePPUData:\nBuffer then write PPU data
NesPrgRom:5892:L5892 NesPrgRom:5892:L5892
NesPrgRom:58BD:L98BD_loop NesPrgRom:58BD:L98BD_loop:\nWord_06BC /= 4
NesPrgRom:58C6:
NesPrgRom:58E1::\nWord_06BE /= 4
NesPrgRom:58E3:L98E3_loop NesPrgRom:58E3:L98E3_loop
NesPrgRom:58FF:L58FF NesPrgRom:58EC::\nWord_06BE += Word_074D
NesPrgRom:590C:L590C NesPrgRom:58FF:L58FF_WriteLoop
NesPrgRom:590C:L590C_bufferLoop
NesPrgRom:590F::addr high NesPrgRom:590F::addr high
NesPrgRom:5916::addr low NesPrgRom:5916::addr low
NesPrgRom:591C::length NesPrgRom:591C::length
NesPrgRom:592C:L592C NesPrgRom:592C:L592C_copyLoop
NesPrgRom:594C:L594C NesPrgRom:5937::\nnumber of tiles written
NesPrgRom:5941::\nwrap back around to the start\non overflow
NesPrgRom:594C:L594C:tiles left to copy
NesPrgRom:5954::\nWord_06BC += 16
NesPrgRom:5965::\nWord_06BE += 16
NesPrgRom:5976:
NesPrgRom:5984::wait for write to PPU? NesPrgRom:5984::wait for write to PPU?
NesPrgRom:598A:L598A NesPrgRom:598A:L598A_done
NesPrgRom:5995:L9995 NesPrgRom:5995:L9995_CountDataLen:\nGets the lengths of data for all\nthe images in the data and saves\nthe start offset to each in\nTable_4E01\n\nInput is Word_96, used as a pointer
NesPrgRom:59BC:L59BC NesPrgRom:599D::\nWord_96 = Word_50
NesPrgRom:59A5:
NesPrgRom:59A7::number of images/sprites
NesPrgRom:59AF::\nWord_50 += 1
NesPrgRom:59BC:L59BC_loop
NesPrgRom:59C9::\nWord_61 += (Word_50), Y
NesPrgRom:59D6:
NesPrgRom:59DB:
NesPrgRom:59E8:
NesPrgRom:5A01:Handler_88_PlaySound:\nSeems to play a short SFX NesPrgRom:5A01:Handler_88_PlaySound:\nSeems to play a short SFX
NesPrgRom:5A2E::\nenabling different channels? NesPrgRom:5A2E::\nenabling different channels?
NesPrgRom:5A39: NesPrgRom:5A39:
@ -1335,13 +1460,16 @@ NesPrgRom:63C5:LA3C5_indirect_jsr
NesPrgRom:63C8:Handler_9C_Toggle44FE:\n--- NesPrgRom:63C8:Handler_9C_Toggle44FE:\n---
NesPrgRom:63D3:LA3D3 NesPrgRom:63D3:LA3D3
NesPrgRom:63DE:Handler_EC:\nSome scroll math NesPrgRom:63DE:Handler_EC:\nSome scroll math
NesPrgRom:647B:Handler_EB NesPrgRom:647B:Handler_EB_DrawOverlay
NesPrgRom:648A:LA48A_rts NesPrgRom:648A:LA48A_rts
NesPrgRom:648B:LA48B NesPrgRom:648B:LA48B
NesPrgRom:64A4:LA4A4 NesPrgRom:64A4:LA4A4
NesPrgRom:64C3::\nByte_4A = ArgA.Low\nArgA = ArgA - 1 NesPrgRom:64C3::\nByte_4A = ArgA.Low\nArgA = ArgA - 1
NesPrgRom:64C7:
NesPrgRom:64D2: NesPrgRom:64D2:
NesPrgRom:64E6: NesPrgRom:64E6:
NesPrgRom:64EB:
NesPrgRom:64F8:
NesPrgRom:650D: NesPrgRom:650D:
NesPrgRom:6524: NesPrgRom:6524:
NesPrgRom:6531: NesPrgRom:6531:
@ -1425,7 +1553,7 @@ NesPrgRom:6B30:Handler_AF_StrToArgA:Takes the first byte of the string\nat $0700
NesPrgRom:6B3A:Handler_B0_ArgAToStr:Takes ArgA+0 and writes it to the\nfirst Word of the string at $0700. NesPrgRom:6B3A:Handler_B0_ArgAToStr:Takes ArgA+0 and writes it to the\nfirst Word of the string at $0700.
NesPrgRom:6C83:Handler_A8 NesPrgRom:6C83:Handler_A8
NesPrgRom:6CEE:Handler_F2_InfLoop NesPrgRom:6CEE:Handler_F2_InfLoop
NesPrgRom:6E56:Handler_A9:ArgA DataID (used as a lookup into $6C01)\n\nupdates or restores nametable.\nlooks like it works on a portion\nof the screen, not the full screen. NesPrgRom:6E56:Handler_A9_RestoreTiles:ArgA DataID (used as a lookup into $6C01)\n\nupdates or restores nametable.\nlooks like it works on a portion\nof the screen, not the full screen.
NesPrgRom:6E5F:L6E5F_loop NesPrgRom:6E5F:L6E5F_loop
NesPrgRom:6E69:L6E69 NesPrgRom:6E69:L6E69
NesPrgRom:6E6D:L6E6D:\ndraws some nametable stuff NesPrgRom:6E6D:L6E6D:\ndraws some nametable stuff
@ -1636,9 +1764,6 @@ NesPrgRom:EC88:Data_EC88:Attribute Data. First half.
NesPrgRom:ECA8:Data_ECA8:Attribute data. Second half. NesPrgRom:ECA8:Data_ECA8:Attribute data. Second half.
NesPrgRom:ECC8:Data_ECC8:Tile Data in rows NesPrgRom:ECC8:Data_ECC8:Tile Data in rows
NesPrgRom:10000:D10000:Title sprite CHR data NesPrgRom:10000:D10000:Title sprite CHR data
NesPrgRom:3FA20-3FA27:CHR_BA20_A
NesPrgRom:3FA28-3FA2F:CHR_BA28_B
NesInternalRam:0000-0001:Word_00
NesInternalRam:0002-0003:Pointer_02 NesInternalRam:0002-0003:Pointer_02
NesInternalRam:0004-0005:Word_04:Either a pointer or a counter, depending on context. NesInternalRam:0004-0005:Word_04:Either a pointer or a counter, depending on context.
NesInternalRam:0008-0009:Pointer_08 NesInternalRam:0008-0009:Pointer_08
@ -1673,12 +1798,12 @@ NesInternalRam:0054-0055:Pointer_54
NesInternalRam:0056-0057:Word_56 NesInternalRam:0056-0057:Word_56
NesInternalRam:0058-0059:Word_58 NesInternalRam:0058-0059:Word_58
NesInternalRam:005A-005B:Pointer_5A NesInternalRam:005A-005B:Pointer_5A
NesInternalRam:0060-0061:Pointer_60 NesInternalRam:0060:Byte_60
NesInternalRam:0062:Byte_62 NesInternalRam:0061-0062:Word_61
NesInternalRam:0063-0064:Pointer_63 NesInternalRam:0063-0064:Pointer_63
NesInternalRam:0065:Byte_65 NesInternalRam:0065:Byte_65
NesInternalRam:0066-0067:Word_66 NesInternalRam:0066:Byte_66
NesInternalRam:0068-0069:Word_68 NesInternalRam:0067-0068:Word_67
NesInternalRam:006A:Byte_6A NesInternalRam:006A:Byte_6A
NesInternalRam:006B-006C:Word_6B NesInternalRam:006B-006C:Word_6B
NesInternalRam:006D-006E:Word_6D NesInternalRam:006D-006E:Word_6D
@ -1700,7 +1825,7 @@ NesInternalRam:00B4:Flag_BtnLeft
NesInternalRam:00B5:Flag_BtnRight NesInternalRam:00B5:Flag_BtnRight
NesInternalRam:00B6:Flag_BtnA NesInternalRam:00B6:Flag_BtnA
NesInternalRam:00B7:Flag_BtnB NesInternalRam:00B7:Flag_BtnB
NesInternalRam:00B8-00B9:Word_B8 NesInternalRam:00B8-00BF:Array_RngMaybe
NesInternalRam:00C0:Frame_Sleeping NesInternalRam:00C0:Frame_Sleeping
NesInternalRam:00C4:Byte_C4 NesInternalRam:00C4:Byte_C4
NesInternalRam:00C5:Flag_BtnStart NesInternalRam:00C5:Flag_BtnStart
@ -1741,10 +1866,7 @@ NesInternalRam:0300:TapeCtrl_Cache_0300
NesInternalRam:0301:Byte_0301 NesInternalRam:0301:Byte_0301
NesInternalRam:0302-0303:PpuBuffer_Address:Destination address for the buffer's contents NesInternalRam:0302-0303:PpuBuffer_Address:Destination address for the buffer's contents
NesInternalRam:0304:PpuBuffer_Length:Length of data in the buffer NesInternalRam:0304:PpuBuffer_Length:Length of data in the buffer
NesInternalRam:0305-0324:PpuBufferData_0305 NesInternalRam:0305-034D:PpuBufferData_0305
NesInternalRam:0325:Byte_0325
NesInternalRam:0326-0327:Word_0326
NesInternalRam:0328-0347:Table_0328
NesInternalRam:0420-0440:AudioString_0420 NesInternalRam:0420-0440:AudioString_0420
NesInternalRam:0441-0461:AudioString_0441 NesInternalRam:0441-0461:AudioString_0441
NesInternalRam:0462-0482:AudioString_0462 NesInternalRam:0462-0482:AudioString_0462
@ -1780,26 +1902,27 @@ NesInternalRam:0606:Byte_0606
NesInternalRam:0607:Byte_0607 NesInternalRam:0607:Byte_0607
NesInternalRam:0610-061F:PaletteBuffer_0610 NesInternalRam:0610-061F:PaletteBuffer_0610
NesInternalRam:0620-062F:PaletteBuffer_0620 NesInternalRam:0620-062F:PaletteBuffer_0620
NesInternalRam:0680:Byte_0680 NesInternalRam:0680:Byte_0680_CurrentNametable
NesInternalRam:06BC-06BD:Word_06BC NesInternalRam:06BC-06BD:Word_06BC
NesInternalRam:06BE-06BF:Word_06BE NesInternalRam:06BE-06BF:Word_06BE
NesInternalRam:06C0:Byte_06C0 NesInternalRam:06C0:Byte_06C0
NesInternalRam:06C3-06C4:Word_06C3 NesInternalRam:06C3-06C4:Word_06C3
NesInternalRam:06C8:Byte_06C8 NesInternalRam:06C8:Byte_06C8_Input
NesInternalRam:06C9:Byte_06C9 NesInternalRam:06C9:Byte_06C9_Input
NesInternalRam:06CA-06CB:Word_06CA NesInternalRam:06CA-06CB:Word_06CA
NesInternalRam:06CC:Byte_06CC NesInternalRam:06CC:Byte_06CC
NesInternalRam:06CD:Byte_06CD NesInternalRam:06CD:Byte_06CD
NesInternalRam:06CE-06CF:Word_06CE_Result:Multiply result\n(also div result??) NesInternalRam:06CE-06CF:Word_06CE_Result:Multiply result\n(also div result??)
NesInternalRam:06D1-06D6:Table_06D1 NesInternalRam:06D0:Byte_06D0
NesInternalRam:06D1-06D6:ScreenDraw_Header
NesInternalRam:0700-071F:String_0700 NesInternalRam:0700-071F:String_0700
NesInternalRam:0720-073F:String_0720 NesInternalRam:0720-073F:String_0720
NesInternalRam:0740:Byte_0740_TapeNMISetup:set to 0 if tape NMI is setup\nset to 1 if not\n?? maybe NesInternalRam:0740:Byte_0740_TapeNMISetup:set to 0 if tape NMI is setup\nset to 1 if not\n?? maybe
NesInternalRam:0741-0742:Word_0742_NextAvailTileId NesInternalRam:0741-0742:Word_0742
NesInternalRam:0745-0746:Word_0745 NesInternalRam:0745-0746:Word_0745
NesInternalRam:0747-0748:Word_0747_NT NesInternalRam:0747-0748:Word_0747_NT
NesInternalRam:0749-074A:Word_0749_Attr NesInternalRam:0749-074A:Word_0749_Attr
NesInternalRam:074B:Byte_074B NesInternalRam:074B:Byte_074B_TileIdOffset
NesInternalRam:074D-074E:Word_074D NesInternalRam:074D-074E:Word_074D
NesInternalRam:0750:Byte_0750 NesInternalRam:0750:Byte_0750
NesInternalRam:0753:BgFlag_0753 NesInternalRam:0753:BgFlag_0753
@ -1831,7 +1954,10 @@ NesWorkRam:0480:Table_WR0480
NesWorkRam:0640-067F:Table64_6640 NesWorkRam:0640-067F:Table64_6640
NesWorkRam:0700-07FF:Page_6700 NesWorkRam:0700-07FF:Page_6700
NesWorkRam:0800-080F:Table_6800 NesWorkRam:0800-080F:Table_6800
NesWorkRam:0880-097F:Table_WR_880:Something with sprites.
NesWorkRam:0980-098F:Table_6980 NesWorkRam:0980-098F:Table_6980
NesWorkRam:0A00:Stack_6A00
NesWorkRam:0AFE-0AFF:Word_6AFE
NesWorkRam:0C01:Table_6C01 NesWorkRam:0C01:Table_6C01
NesWorkRam:0C41-0C42:Table_6C41 NesWorkRam:0C41-0C42:Table_6C41
NesWorkRam:0CC1-0CC2:Table_6CC1 NesWorkRam:0CC1-0CC2:Table_6CC1
@ -1916,6 +2042,13 @@ NesWorkRam:871A-871B:Word_471A
NesWorkRam:871C-871D:Word_471C NesWorkRam:871C-871D:Word_471C
NesWorkRam:871E-871F:Word_471E NesWorkRam:871E-871F:Word_471E
NesWorkRam:8720:PrevRamBank_4720 NesWorkRam:8720:PrevRamBank_4720
NesWorkRam:8721:Byte_4721
NesWorkRam:8722:Byte_4722
NesWorkRam:8723:Byte_4723
NesWorkRam:8724:Byte_4724
NesWorkRam:8725:Byte_4725
NesWorkRam:8726:Byte_4726
NesWorkRam:8727-8728:Word_4727
NesWorkRam:8800:LongCallIndex_4800 NesWorkRam:8800:LongCallIndex_4800
NesWorkRam:8801-8814:BankTable_4801:Stores the bank number for a\nscript so we can return to it\nlater. NesWorkRam:8801-8814:BankTable_4801:Stores the bank number for a\nscript so we can return to it\nlater.
NesWorkRam:8815-883C:WordTable_4815:Table of code return addresses NesWorkRam:8815-883C:WordTable_4815:Table of code return addresses