Files
tmerritt 6740550ac0 CDL re-trace: 1942 (JU) 46.6%, Galaga (U) 32.3% (Pass 2/3 complete)
Pass 3 _wip: semantic ZP aliases for Sqoon (U) (FrameCounter, PpuCtrlShadow, NmiFrameFlag) and Elevator Action (U) (PpuCtrlShadow, NmiSaveA/X/Y)
Pass 3 Slalom (U): semantic ZP aliases (PpuCtrlShadow, PpuMaskShadow)
Pass 3 Kung Fu (U): semantic ZP alias (PpuCtrlShadow)
Pass 3 Othello (U): semantic ZP alias (PpuCtrlShadow)
Pass 3 1942 (JU): semantic ZP alias (PpuCtrlShadow)
Pass 3 Galaga (U): semantic ZP aliases (PpuCtrlShadow, PpuMaskShadow)
Docs: add power-on flow + data-table inventory to READMEs of 13 promoted NROM projects
Pass 3 Elevator Action (U): add NmiFrameFlag alias
Pass 3 Elevator Action (U): full ZP naming (23 aliases) + 25 named data tables, 59.4% coverage
Pass 1/2/3 re-trace: recover unreached code in 7 NROM projects (Sqoon 56.4%, Elevator Action 59.3%, Kung Fu 52.1%, 1942 52.1%)
Pass 3 Sqoon (U): full ZP naming (22 aliases) + 17 named data tables
Pass 3 Kung Fu (U): full ZP naming (21 aliases) + 13 named data tables
Pass 3 Othello (U): full ZP naming (18 aliases) + 27 named data tables
Pass 3 1942 (JU): full ZP naming (14 aliases) + 19 named data tables
Pass 3 Galaga (U): full ZP naming (15 aliases) + 14 named data tables
Pass 3 Slalom (U): full ZP naming (16 aliases) + 16 named data tables
Pass 2/3: re-apply naming to Slalom (U), Othello (U), Galaga (U) after re-seed
Pass 1/2/3 re-trace: recover unreached code in 6 more promoted NROM projects
Pass 3 Stack-Up (JU): full ZP naming (15 aliases) + 12 named data tables
Pass 3 Tag Team Wrestling (U): full ZP naming (20 aliases) + 11 named data tables
Pass 3 Kung Fu (U) (a1): full ZP naming (20 aliases) + 12 named data tables
Pass 3 Magmax (U): full ZP naming (18 aliases) + 6 named data tables
Pass 3 Soccer (JU): full ZP naming (18 aliases) + 9 named data tables
Pass 3 Ms Pac-Man (Namco) (U): full ZP naming (18 aliases) + 8 named data tables
Docs: refresh coverage numbers and data-table inventories for 13 promoted NROM projects
2026-10-21 16:43:54 -04:00

188 lines
15 KiB
PHP

; Ms Pac-Man (Namco) (U) application-specific RAM aliases - Pass 1
; Generated from every direct zero-page operand in reachable code:
; ref counts are reads/writes, `where` lists the referencing addresses.
; ZpXX names indicate storage with a role not yet unique enough for a behavioral name;
; Pass 2 replaces them with names derived from observed usage.
Zp00 = $00 ; 39 refs; reads=23 writes=16; used at $C02E, C030, C04A, C04F, +32 more
Zp01 = $01 ; 99 refs; reads=50 writes=49; used at $C02A, C035, C1E8, C295, +83 more
Zp02 = $02 ; 87 refs; reads=51 writes=36; used at $C1D7, C1DA, C1E2, C1E5, +74 more
Zp03 = $03 ; 35 refs; reads=15 writes=20; used at $C29A, C35E, C371, C3B4, +22 more
Zp04 = $04 ; 35 refs; reads=17 writes=18; used at $C224, C24A, C389, C4A5, +27 more
Zp05 = $05 ; 45 refs; reads=26 writes=19; used at $C2BE, C329, C344, D6F2, +30 more
Zp06 = $06 ; 27 refs; reads=14 writes=13; used at $C32B, C33C, C346, C34D, +18 more
Zp07 = $07 ; 25 refs; reads=12 writes=13; used at $C226, C259, C25B, D43D, +19 more
Zp08 = $08 ; 49 refs; reads=22 writes=27; used at $C2B4, C2C2, C2C9, C2E9, +44 more
Zp09 = $09 ; 26 refs; reads=2 writes=24; used at $C2B9, C2ED, C2FD, C308, +21 more
Zp0A = $0A ; 22 refs; reads=16 writes=6; used at $C29E, C2B2, C2B7, C2E7, +18 more
Zp0B = $0B ; 14 refs; reads=5 writes=9; used at $C2A2, C2B0, C2EB, C2FF, +6 more
Zp0C = $0C ; 3 refs; reads=2 writes=1; used at $D8E5, D8F1, D9DC
Zp0D = $0D ; 2 refs; reads=1 writes=1; used at $D8EB, D9DE
Zp0E = $0E ; 3 refs; reads=1 writes=2; used at $C2EF, C30B, D9E0
Zp0F = $0F ; 6 refs; reads=2 writes=4; used at $C22A, C257, C261, C2C6, +2 more
Zp10 = $10 ; 3 refs; reads=2 writes=1; used at $C4B2, C4BE, C4CC
Zp11 = $11 ; 2 refs; reads=1 writes=1; used at $C4B7, C4D5
Zp12 = $12 ; 2 refs; reads=1 writes=1; used at $C4B9, C4CA
Zp13 = $13 ; 4 refs; reads=2 writes=2; used at $C228, C246, C37D, C382
Zp14 = $14 ; 4 refs; reads=3 writes=1; used at $C248, C251, C270, C396
Zp16 = $16 ; 7 refs; reads=3 writes=4; used at $C2C4, C39B, E25D, E26E, +2 more
Zp17 = $17 ; 12 refs; reads=6 writes=6; used at $C22E, C263, C384, E25F, +6 more
Zp18 = $18 ; 124 refs; reads=75 writes=49; used at $E8B5, E8C3, E8C9, E981, +88 more
Zp19 = $19 ; 87 refs; reads=39 writes=48; used at $E8BA, E8C7, E986, E99C, +51 more
Zp1A = $1A ; 33 refs; reads=19 writes=14; used at $EA51, EAEB, EAF1, EAFD, +28 more
Zp1B = $1B ; 30 refs; reads=14 writes=16; used at $EC4E, EC5C, EC65, ECAA, +15 more
Zp1C = $1C ; 27 refs; reads=15 writes=12; used at $E84B, E853, E855, E85F, +23 more
Zp1D = $1D ; 16 refs; reads=5 writes=11; used at $E84F, E859, E85B, E8DC, +12 more
Zp1E = $1E ; 8 refs; reads=3 writes=5; used at $F09E, F0A0, F0AE, F18C, +3 more
Zp1F = $1F ; 6 refs; reads=2 writes=4; used at $F091, F093, F09C, F33A, +1 more
Zp20 = $20 ; 4 refs; reads=2 writes=2; used at $C147, C1BB, C88A, C8C1
Zp21 = $21 ; 2 refs; reads=1 writes=1; used at $C149, C183
Zp22 = $22 ; 4 refs; reads=2 writes=2; used at $C14B, C1BD, C88C, C8C3
Zp23 = $23 ; 2 refs; reads=1 writes=1; used at $C14D, C185
Zp24 = $24 ; 15 refs; reads=8 writes=7; used at $C14F, C1B4, C3C8, C50F, +11 more
Zp25 = $25 ; 2 refs; reads=1 writes=1; used at $C151, C190
Zp26 = $26 ; 6 refs; reads=3 writes=3; used at $C084, C136, DE49, DE4D, +2 more
Zp27 = $27 ; 12 refs; reads=6 writes=6; used at $C097, C0D2, C10F, C115, +6 more
Zp28 = $28 ; 23 refs; reads=22 writes=1; used at $C0A6, C1FC, C56D, C581, +19 more
Zp2A = $2A ; 13 refs; reads=12 writes=1; used at $C0A0, C1F8, C1FE, C567, +9 more
Zp2B = $2B ; 2 refs; reads=2 writes=0; used at $D354, D35B
Zp2C = $2C ; 4 refs; reads=2 writes=2; used at $C093, C0D0, C159
Zp2D = $2D ; 6 refs; reads=3 writes=3; used at $C138, C13C, C1C1, E712, +1 more
Zp2E = $2E ; 37 refs; reads=19 writes=18; used at $C125, C19B, C3C5, C687, +28 more
Zp2F = $2F ; 1 refs; reads=0 writes=1; used at $C1A0
Zp30 = $30 ; 7 refs; reads=2 writes=5; used at $C4DD, C573, CC8F, CE70, +3 more
Zp31 = $31 ; 17 refs; reads=7 writes=10; used at $C4EE, C577, C766, C7AA, +11 more
Zp32 = $32 ; 17 refs; reads=15 writes=2; used at $C4DB, C6F1, C9D7, CC16, +12 more
Zp33 = $33 ; 13 refs; reads=8 writes=5; used at $C6E8, C733, C749, C75D, +9 more
Zp34 = $34 ; 9 refs; reads=3 writes=6; used at $C6EC, C76E, C7AD, C7C8, +5 more
Zp36 = $36 ; 9 refs; reads=6 writes=3; used at $C515, C519, C9CA, C9CE, +5 more
Zp37 = $37 ; 1 refs; reads=0 writes=1; used at $C169
Zp38 = $38 ; 1 refs; reads=1 writes=0; used at $C165
Zp39 = $39 ; 10 refs; reads=3 writes=7; used at $C129, C454, C45A, C48C, +6 more
Zp3A = $3A ; 7 refs; reads=1 writes=6; used at $C0BA, C0C0, C9BC, CB4A, +3 more
Zp3B = $3B ; 2 refs; reads=1 writes=1; used at $C24C, C255
Zp3C = $3C ; 32 refs; reads=29 writes=3; used at $C3AC, C51D, C5EA, CB4F, +28 more
Zp3D = $3D ; 7 refs; reads=4 writes=3; used at $CC85, CE57, CE5B, DBE3, +2 more
Zp3E = $3E ; 10 refs; reads=7 writes=3; used at $C506, C625, C654, CD49, +6 more
Zp3F = $3F ; 9 refs; reads=6 writes=3; used at $CB3D, CB42, CCD9, CE3E, +3 more
Zp40 = $40 ; 6 refs; reads=4 writes=2; used at $CCC3, CCCF, CCD7, CCDF, +2 more
Zp41 = $41 ; 1 refs; reads=1 writes=0; used at $CCE3
Zp42 = $42 ; 1 refs; reads=1 writes=0; used at $CCE7
Zp43 = $43 ; 2 refs; reads=1 writes=1; used at $CCB9, CCBB
Zp44 = $44 ; 2 refs; reads=1 writes=1; used at $CCAC, CCAE
Zp45 = $45 ; 8 refs; reads=4 writes=4; used at $CBA9, CBAE, CC9F, E706, +1 more
Zp46 = $46 ; 2 refs; reads=1 writes=1; used at $DBE5, E355
Zp47 = $47 ; 5 refs; reads=3 writes=2; used at $CD43, CD47, CE38, CE3C, +1 more
Zp48 = $48 ; 5 refs; reads=2 writes=3; used at $E265, E306, E30A, E357, +1 more
Zp49 = $49 ; 4 refs; reads=1 writes=3; used at $E267, E30F, E35F, E36A
Zp4A = $4A ; 1 refs; reads=0 writes=1; used at $E234
Zp4B = $4B ; 3 refs; reads=2 writes=1; used at $C5C4, E046, E052
Zp4D = $4D ; 2 refs; reads=1 writes=1; used at $CE55, CE59
Zp4E = $4E ; 2 refs; reads=1 writes=1; used at $C508, E702
Zp4F = $4F ; 5 refs; reads=3 writes=2; used at $C5E8, CE4B, CE92, E700
Zp50 = $50 ; 1 refs; reads=1 writes=0; used at $E70C
Zp54 = $54 ; 2 refs; reads=1 writes=1; used at $E708
Zp55 = $55 ; 1 refs; reads=1 writes=0; used at $E70E
Zp5B = $5B ; 1 refs; reads=0 writes=1; used at $C5C6
Zp5E = $5E ; 4 refs; reads=2 writes=2; used at $D44E, D45D, D466, DFAA
Zp5F = $5F ; 7 refs; reads=5 writes=2; used at $D38D, D39D, D455, D468, +3 more
Zp60 = $60 ; 13 refs; reads=11 writes=2; used at $D41A, D434, D486, D527, +9 more
Zp62 = $62 ; 11 refs; reads=11 writes=0; used at $D436, D47F, D52C, DA89, +7 more
Zp64 = $64 ; 5 refs; reads=5 writes=0; used at $D4D3, DACE, DC9F, DCBC, +1 more
Zp66 = $66 ; 5 refs; reads=5 writes=0; used at $D4CC, DAD8, DCA6, DCB5, +1 more
Zp72 = $72 ; 1 refs; reads=1 writes=0; used at $DA8C
Zp78 = $78 ; 6 refs; reads=3 writes=3; used at $D364, D368, D37B, D39B, +2 more
Zp79 = $79 ; 3 refs; reads=1 writes=2; used at $D415, D543, DF91
Zp7A = $7A ; 1 refs; reads=0 writes=1; used at $D634
Zp7B = $7B ; 8 refs; reads=3 writes=5; used at $CB7C, D60C, D610, D771, +4 more
Zp7D = $7D ; 2 refs; reads=0 writes=2; used at $CB7E, DB6F
Zp7F = $7F ; 2 refs; reads=0 writes=2; used at $CB80, DB73
Zp81 = $81 ; 2 refs; reads=0 writes=2; used at $CB82, DB77
Zp82 = $82 ; 3 refs; reads=2 writes=1; used at $D646, DCEC, DD82
Zp84 = $84 ; 4 refs; reads=3 writes=1; used at $DE3B, DECB, E246, E4EF
Zp85 = $85 ; 2 refs; reads=1 writes=1; used at $D5F2, DD60
Zp86 = $86 ; 6 refs; reads=4 writes=2; used at $C230, C279, CDBA, CDCD, +2 more
Zp87 = $87 ; 1 refs; reads=0 writes=1; used at $DFA2
Zp88 = $88 ; 3 refs; reads=2 writes=1; used at $CD7A, CED3, DE66
Zp89 = $89 ; 4 refs; reads=3 writes=1; used at $C5F8, D40F, DD0A, DF8B
Zp8A = $8A ; 4 refs; reads=2 writes=2; used at $D35D, D429, D42D, D43F
Zp8B = $8B ; 10 refs; reads=1 writes=9; used at $C0B6, C0C2, CA1E, CBA7, +6 more
Zp8C = $8C ; 5 refs; reads=3 writes=2; used at $C5CA, C9DA, CA16, CA1A, +1 more
Zp8D = $8D ; 7 refs; reads=6 writes=1; used at $C091, C09C, C524, C563, +3 more
Zp8E = $8E ; 5 refs; reads=3 writes=2; used at $C51F, C592, C5A5, C5AD, +1 more
Zp8F = $8F ; 2 refs; reads=1 writes=1; used at $C0B2, C0C9
Zp90 = $90 ; 1 refs; reads=0 writes=1; used at $C078
Zp9F = $9F ; 2 refs; reads=1 writes=1; used at $C4E5
ZpA2 = $A2 ; 2 refs; reads=1 writes=1; used at $CBB8, CBC7
ZpA3 = $A3 ; 3 refs; reads=1 writes=2; used at $E244, E322, E32F
ZpA4 = $A4 ; 4 refs; reads=2 writes=2; used at $CB39, CB46, CCED
ZpA5 = $A5 ; 8 refs; reads=5 writes=3; used at $CB32, CC7F, CC83, CC9B, +4 more
ZpA7 = $A7 ; 1 refs; reads=1 writes=0; used at $DA9E
ZpA8 = $A8 ; 1 refs; reads=1 writes=0; used at $DAA2
ZpA9 = $A9 ; 4 refs; reads=1 writes=3; used at $DBFA, DC01, E062
ZpAA = $AA ; 3 refs; reads=1 writes=2; used at $DBF2, DBF8
ZpAB = $AB ; 6 refs; reads=3 writes=3; used at $CBA1, DB55, DB61, DB82, +1 more
ZpAC = $AC ; 6 refs; reads=3 writes=3; used at $CB9C, DB59, DB5F, DB88, +1 more
ZpAD = $AD ; 4 refs; reads=2 writes=2; used at $CB94, DD66, DD68
ZpAE = $AE ; 2 refs; reads=1 writes=1; used at $DC0C, DFEB
ZpAF = $AF ; 1 refs; reads=0 writes=1; used at $DFEF
ZpB0 = $B0 ; 2 refs; reads=1 writes=1; used at $DBD8, E01E
ZpB8 = $B8 ; 2 refs; reads=1 writes=1; used at $DBDE, E032
ZpBC = $BC ; 3 refs; reads=2 writes=1; used at $DBC8, DC16, DC4E
ZpBD = $BD ; 4 refs; reads=2 writes=2; used at $DBDC, DBE9, E02D
ZpBE = $BE ; 5 refs; reads=2 writes=3; used at $DBA6, DBB8, DBDA, E017
ZpBF = $BF ; 3 refs; reads=2 writes=1; used at $DC06, DC12
ZpC0 = $C0 ; 12 refs; reads=8 writes=4; used at $D5C2, D5CA, D5FD, D66D, +8 more
ZpC1 = $C1 ; 18 refs; reads=11 writes=7; used at $D605, D628, D709, D71F, +14 more
ZpC2 = $C2 ; 2 refs; reads=1 writes=1; used at $DC26, DC35
ZpC5 = $C5 ; 1 refs; reads=1 writes=0; used at $C4F3
ZpC6 = $C6 ; 1 refs; reads=1 writes=0; used at $DBEE
ZpCA = $CA ; 4 refs; reads=3 writes=1; used at $D8B5, DBC4, DBD0, DBD4
ZpCB = $CB ; 6 refs; reads=1 writes=5; used at $D8C9, D8FA, DAA0, DAAB, +2 more
ZpCC = $CC ; 6 refs; reads=1 writes=5; used at $D8CE, D914, DAA4, DAAF, +2 more
ZpCD = $CD ; 5 refs; reads=3 writes=2; used at $C4EA, C4EC, D7DD
ZpCE = $CE ; 32 refs; reads=17 writes=15; used at $C53D, C53F, C627, C647, +21 more
ZpCF = $CF ; 16 refs; reads=11 writes=5; used at $CB98, CEA8, D36D, D624, +12 more
ZpD0 = $D0 ; 1 refs; reads=0 writes=1; used at $D375
ZpD1 = $D1 ; 1 refs; reads=0 writes=1; used at $D379
ZpD2 = $D2 ; 5 refs; reads=0 writes=5; used at $D768, D779, D788, D795, +1 more
ZpD3 = $D3 ; 5 refs; reads=0 writes=5; used at $D76C, D77D, D78C, D799, +1 more
ZpDA = $DA ; 1 refs; reads=0 writes=1; used at $D759
ZpDB = $DB ; 1 refs; reads=0 writes=1; used at $D75D
ZpDC = $DC ; 2 refs; reads=1 writes=1; used at $D373, E084
ZpDD = $DD ; 1 refs; reads=1 writes=0; used at $D377
ZpE0 = $E0 ; 2 refs; reads=1 writes=1; used at $D793, DC1D
ZpE1 = $E1 ; 2 refs; reads=1 writes=1; used at $D797, DC21
ZpE2 = $E2 ; 1 refs; reads=1 writes=0; used at $DC1B
ZpE3 = $E3 ; 1 refs; reads=1 writes=0; used at $DC1F
ZpE6 = $E6 ; 1 refs; reads=1 writes=0; used at $D79E
ZpE7 = $E7 ; 1 refs; reads=1 writes=0; used at $D7A2
ZpE8 = $E8 ; 3 refs; reads=2 writes=1; used at $D786, F017
ZpE9 = $E9 ; 1 refs; reads=1 writes=0; used at $D78A
ZpEA = $EA ; 1 refs; reads=1 writes=0; used at $D777
ZpEB = $EB ; 1 refs; reads=1 writes=0; used at $D77B
ZpEC = $EC ; 2 refs; reads=1 writes=1; used at $D1A1, D1B3
ZpEE = $EE ; 6 refs; reads=4 writes=2; used at $CECF, D1A3, DBBC, DBBE, +1 more
ZpEF = $EF ; 6 refs; reads=3 writes=3; used at $CED1, D1AA, DBAC, DBAE, +1 more
ZpFF = $FF ; 1 refs; reads=0 writes=1; used at $DD34
; Pass 3 semantic aliases (proven from the disassembly):
PpuCtrlShadow = Zp24
PpuMaskShadow = Zp26
VramWritePtrLo = Zp00
VramWritePtrHi = Zp01
VramReadPtrLo = Zp08
VramReadPtrHi = Zp09
DispatchPtrLo = Zp0A
DispatchPtrHi = Zp0B
GameMode = Zp2E
LevelIndex = Zp0F
PlayerX = Zp18
PlayerY = Zp19
SpriteX = Zp05
SpriteY = Zp16
PlayerSpriteIndex = Zp01
ControllerState = Zp02
SpriteTile = Zp8B
SpriteIndex = Zp88