Files
disasm/Ice Climber (U)/copilot/locals.inc
T
tmerritt 9eb04ea7ef Adds overview for WIP projects
Promote Ice Climber (JE) and Ice Climber (U) to top-level

- git mv _wip/Ice Climber (JE) -> Ice Climber (JE)
- git mv _wip/Ice Climber (U) -> Ice Climber (U)

- Added header.s / chr.s (one-line .incbin each)
- Added HEADER/PRG/CHR linker.cfg with proper memory layout
- Added copilot/rom.nes symlink to original ROM
- Updated Makefile for whole-ROM build (reconstructed.nes vs rom.nes)
- Updated _tools paths from ../../../_tools/ to ../../_tools/

Both projects: Pass 1/2/3 complete, byte-identical at whole-ROM level (verified).

Root OVERVIEW.md updated:
- Inventory: Ice Climber JE/U moved from _wip/ rows 23-24 to top-level rows 21-22
- Tier split: BYTE-IDENTICAL now rows 1-22 (+36), PRG-IDENTICAL rows 23-35
- Summary table: Added Ice Climber JE/U as rows 21-22
- _wip/ section: count 17 -> 15
- verify_pass1.py scope: 19 -> 22 top-level projects

All 22 top-level projects verified byte-identical.

Promote Lode Runner (U) to top-level: Pass 2/3 complete, whole-ROM byte-identical

- git mv _wip/Lode Runner (U) -> Lode Runner (U)

- Added header.s / chr.s (one-line .incbin each)
- Added HEADER/PRG/CHR linker.cfg with proper memory layout
- Added copilot/rom.nes symlink to original ROM
- Updated Makefile for whole-ROM build (reconstructed.nes vs rom.nes)

Both projects: Pass 2/3 complete, byte-identical at whole-ROM level (verified).

Root OVERVIEW.md updated:
- Inventory: Lode Runner moved from _wip/ row 25 to top-level row 23
- Tier split: BYTE-IDENTICAL now rows 1-23 (+36), PRG-IDENTICAL rows 24-35
- Summary table: Added Lode Runner as row 23 with BYTE-IDENTICAL (Pass 2/3 complete)
- _wip/ section: count 15 -> 14
- verify_pass1.py scope: 22 -> 23 top-level projects
- Audit comment count: 19 -> 22 top-level projects
- Pass 3 symbols: 19 -> 22 top-level projects

All 23 top-level projects verified byte-identical.

TODO.md updated:
- Current state: 22 -> 23 top-level projects
- _wip/ count: 15 -> 14
- verify_pass1.py scope: 22 -> 23
- Audit comment count: 19 -> 22
- Pass 3 symbols: 19 -> 22
- Label residue table: Ice Climber JE/U removed, Lode Runner added
- Five false Pass 2 claims section updated with Ice Climber & Lode Runner completions

Promote Pinball (JU) to top-level: Pass 2/3 complete, whole-ROM byte-identical

- git mv _wip/Pinball (JU) -> Pinball (JU)

- Added header.s / chr.s (one-line .incbin each)
- Added HEADER/PRG/CHR linker.cfg with proper memory layout
- Added copilot/rom.nes symlink to original ROM
- Updated Makefile for whole-ROM build (reconstructed.nes vs rom.nes)

Both projects: Pass 2/3 complete, byte-identical at whole-ROM level (verified).

Root OVERVIEW.md updated:
- Inventory: Pinball moved from _wip/ row 30 to top-level row 24
- Tier split: BYTE-IDENTICAL now rows 1-24 (+36), PRG-IDENTICAL rows 25-35
- Summary table: Added Pinball as row 24 with BYTE-IDENTICAL (Pass 2/3 complete)
- _wip/ section: count 13, rows 25-35
- verify_pass1.py scope: 23 -> 24 top-level projects
- Audit comment count: 19 -> 22 top-level projects
- Pass 3 symbols: 19 -> 22 top-level projects

All 24 top-level projects verified byte-identical.

TODO.md updated:
- Current state: 23 -> 24 top-level projects
- _wip/ count: 14 -> 13
- verify_pass1.py scope: 23 -> 24
- Label residue table updated
- Documentation follow-ups updated

Promote Millipede (U) and Popeye (JU) (PRG 0) to top-level

Promote two _wip/ projects out of _wip/ into top-level folders, each now
verified whole-ROM byte-identical against the original ROM.

- Millipede (U): moves all copilot files up, adds header.s, chr.s,
  linker.cfg with PRG+HEADER+CHR areas, rom.nes copy, and switches the
  Makefile from PRG-only cmp to whole-ROM cmp. Makefile _tools depth
  adjusted (../../../../_tools/ -> ../../_tools/).
- Popeye (JU) (PRG 0): same promotion treatment.
- AGENTS.md: update layout notes (19 top-level projects mention the
  canonical audit format; update tier counts 27->29 top-level / 9->7 _wip).
- OVERVIEW.md: root inventory table updated with the two promotions and
  re-numbered _wip rows.
- TODO.md: handoff updates.
- Remaining _wip projects: assorted pass 2/3 edits (prg.s, locals.inc,
  reconstructed.lbl, reconstructed_prg.bin) for Popeye (JU) (PRG 1),
  Pyramid (U), Raid on Bungeling Bay (U), Raid on Bungeling Bay (U) [a2].
2026-10-19 19:58:41 -04:00

172 lines
15 KiB
PHP

; Ice Climber (JE) 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 ; 126 refs; reads=62 writes=64; used at $C030, C041, C153, C18E, +116 more
PtrLo = $00 ; semantic alias
Zp01 = $01 ; 72 refs; reads=30 writes=42; used at $C02C, C046, C158, C562, +60 more
PtrHi = $01 ; semantic alias
Zp02 = $02 ; 39 refs; reads=15 writes=24; used at $C567, C5DF, C733, C777, +33 more
Ptr2Lo = $02 ; semantic alias
Zp03 = $03 ; 54 refs; reads=26 writes=28; used at $C5D9, C60B, C738, C73D, +48 more
Zp04 = $04 ; 33 refs; reads=9 writes=24; used at $C553, C557, C77B, C782, +27 more
Zp05 = $05 ; 20 refs; reads=9 writes=11; used at $C745, C825, C956, C98D, +14 more
Zp06 = $06 ; 22 refs; reads=12 writes=10; used at $C753, C7C8, C7CD, C7F0, +15 more
Zp07 = $07 ; 21 refs; reads=11 writes=10; used at $C74B, C759, C818, C95A, +15 more
Zp08 = $08 ; 12 refs; reads=7 writes=5; used at $C75E, C7C5, DB1D, DB3F, +7 more
Zp09 = $09 ; 21 refs; reads=10 writes=11; used at $C78E, C79D, C7FB, C7FD, +15 more
Zp0A = $0A ; 40 refs; reads=21 writes=19; used at $C7A9, C7B1, C7C3, C7D5, +33 more
Zp0B = $0B ; 31 refs; reads=17 writes=14; used at $C7AB, C7B3, C7CB, C7ED, +24 more
Zp0C = $0C ; 22 refs; reads=11 writes=11; used at $C547, C569, C572, C7AD, +15 more
Zp0D = $0D ; 18 refs; reads=7 writes=11; used at $C54B, C5C1, C5FE, C78A, +11 more
Zp0E = $0E ; 25 refs; reads=10 writes=15; used at $C54F, C5C5, C761, CEA5, +21 more
Zp0F = $0F ; 34 refs; reads=18 writes=16; used at $C5D5, C5E6, C605, C608, +27 more
Zp10 = $10 ; 8 refs; reads=6 writes=2; used at $C07B, C0BE, C144, C148, +4 more
VBlankTimer = $10 ; semantic alias
Zp11 = $11 ; 6 refs; reads=3 writes=3; used at $C08C, C093, C0E2, C0E9, +2 more
Zp12 = $12 ; 2 refs; reads=1 writes=1; used at $C88A, CB81
Zp13 = $13 ; 19 refs; reads=12 writes=7; used at $C1A7, C1E9, C88C, CB86, +15 more
Zp14 = $14 ; 6 refs; reads=3 writes=3; used at $C620, C667, C66E, C672, +2 more
Zp15 = $15 ; 6 refs; reads=3 writes=3; used at $C0EB, C11C, C674, CB1D, +2 more
Zp16 = $16 ; 1 refs; reads=1 writes=0; used at $F047
Zp17 = $17 ; 1 refs; reads=1 writes=0; used at $CC11
Zp18 = $18 ; 6 refs; reads=5 writes=1; used at $C5B0, CAD2, CAE6, F7B5, +1 more
Zp19 = $19 ; 7 refs; reads=6 writes=1; used at $CADC, E688, F06E, F3A1, +2 more
Zp1E = $1E ; 6 refs; reads=3 writes=3; used at $D539, D757, F524, F586, +2 more
Zp1F = $1F ; 3 refs; reads=1 writes=2; used at $C56D, C5C9, C5E2
Zp20 = $20 ; 11 refs; reads=8 writes=3; used at $C259, D481, D73C, EB8E, +5 more
Zp21 = $21 ; 1 refs; reads=1 writes=0; used at $ECD9
Zp22 = $22 ; 1 refs; reads=0 writes=1; used at $C1A9
Zp23 = $23 ; 1 refs; reads=0 writes=1; used at $C1AB
Zp24 = $24 ; 3 refs; reads=2 writes=1; used at $D8E0, D8E5, E57B
Zp25 = $25 ; 3 refs; reads=2 writes=1; used at $E573, E583
Zp26 = $26 ; 2 refs; reads=1 writes=1; used at $CCAC, D4EE
Zp27 = $27 ; 8 refs; reads=7 writes=1; used at $CCDD, D5A9, D8A8, D8BE, +3 more
Zp28 = $28 ; 7 refs; reads=4 writes=3; used at $D5A7, D5B0, D5B8, D635, +3 more
Zp2A = $2A ; 8 refs; reads=6 writes=2; used at $D59E, D5B2, D5B4, D655, +3 more
Zp2C = $2C ; 5 refs; reads=2 writes=3; used at $C289, D7E6, D7EA, D90C
Zp2D = $2D ; 9 refs; reads=6 writes=3; used at $C26E, D218, D318, D47D, +5 more
Zp2E = $2E ; 1 refs; reads=1 writes=0; used at $D21A
Zp2F = $2F ; 4 refs; reads=1 writes=3; used at $C269, C859, D131, EBB5
Zp31 = $31 ; 4 refs; reads=1 writes=3; used at $C1CB, CB9F, CBA5
Zp32 = $32 ; 10 refs; reads=5 writes=5; used at $CBA9, CBAD, CDD7, CECE, +5 more
Zp34 = $34 ; 3 refs; reads=1 writes=2; used at $C2E8, C437, D4FC
Zp37 = $37 ; 2 refs; reads=0 writes=2; used at $C2E2, F509
Zp38 = $38 ; 1 refs; reads=0 writes=1; used at $C2E4
Zp39 = $39 ; 1 refs; reads=0 writes=1; used at $C295
Zp3A = $3A ; 2 refs; reads=1 writes=1; used at $E0C0, E155
Zp3B = $3B ; 2 refs; reads=1 writes=1; used at $F6A4, F6D8
Zp3D = $3D ; 5 refs; reads=2 writes=3; used at $C285, D7E2, D7EE, D908, +1 more
Zp3F = $3F ; 2 refs; reads=1 writes=1; used at $D485, EBA6
Zp43 = $43 ; 3 refs; reads=2 writes=1; used at $C166, ECDD, ED04
Zp48 = $48 ; 3 refs; reads=1 writes=2; used at $F027, F043, F0C6
Zp4A = $4A ; 1 refs; reads=0 writes=1; used at $C28D
Zp4B = $4B ; 1 refs; reads=0 writes=1; used at $C291
Zp4D = $4D ; 5 refs; reads=1 writes=4; used at $C1B5, C1C7, CCED, D545, +1 more
Zp4E = $4E ; 3 refs; reads=1 writes=2; used at $C1D2, F87F, F889
Zp50 = $50 ; 7 refs; reads=6 writes=1; used at $C129, C676, E11B, EC42, +2 more
Zp51 = $51 ; 8 refs; reads=5 writes=3; used at $C0D3, C12B, C1D4, C2AD, +2 more
Zp52 = $52 ; 5 refs; reads=3 writes=2; used at $C088, C09F, C0A4, C218, +1 more
Zp53 = $53 ; 2 refs; reads=1 writes=1; used at $C0C9, C632
Zp54 = $54 ; 2 refs; reads=1 writes=1; used at $C1BD, C1C3
Zp55 = $55 ; 12 refs; reads=11 writes=1; used at $C122, C29A, C63A, C726, +8 more
ZpCheckZp14 = $55 ; semantic alias
Zp56 = $56 ; 8 refs; reads=7 writes=1; used at $C19D, D8FD, EA8E, F0AC, +4 more
Zp57 = $57 ; 11 refs; reads=6 writes=5; used at $C16D, C19F, C1DA, C21A, +4 more
Zp58 = $58 ; 6 refs; reads=6 writes=0; used at $C2D1, C4C2, CC0D, EB84, +2 more
Zp59 = $59 ; 9 refs; reads=8 writes=1; used at $C629, DFA5, E5B4, E719, +5 more
Zp5A = $5A ; 26 refs; reads=19 writes=7; used at $C255, C264, C39D, CD15, +22 more
SprData = $5A ; semantic alias
Zp5B = $5B ; 3 refs; reads=3 writes=0; used at $D214, D4DC, D4E6
Zp5C = $5C ; 4 refs; reads=1 writes=3; used at $DABF, DCD6, DDF8, DE4F
Zp5F = $5F ; 19 refs; reads=15 writes=4; used at $C39F, CCF6, CD08, CD0D, +15 more
SprData2 = $5F ; semantic alias
Zp60 = $60 ; 11 refs; reads=5 writes=6; used at $CD95, CD97, CDA0, CEB4, +5 more
Zp62 = $62 ; 19 refs; reads=10 writes=9; used at $C262, CDF5, CE34, CE80, +15 more
Zp64 = $64 ; 59 refs; reads=37 writes=22; used at $C24B, CD6A, CF02, CFA9, +41 more
Zp65 = $65 ; 2 refs; reads=1 writes=1; used at $C24F, D2DC
Zp66 = $66 ; 40 refs; reads=27 writes=13; used at $C272, C38D, C38F, C644, +31 more
Zp67 = $67 ; 7 refs; reads=5 writes=2; used at $D23E, D275, D27F, D282, +1 more
Zp68 = $68 ; 24 refs; reads=17 writes=7; used at $CDD0, CDE1, CDEB, CDF1, +20 more
Zp6A = $6A ; 42 refs; reads=25 writes=17; used at $C257, C266, C39B, CCA0, +38 more
Zp6B = $6B ; 4 refs; reads=4 writes=0; used at $CCA4, D224, D269, D753
Zp6C = $6C ; 11 refs; reads=6 writes=5; used at $C395, CDA2, CDA4, CDAD, +6 more
Zp6E = $6E ; 10 refs; reads=5 writes=5; used at $CDD4, CE84, CEC4, CFF9, +5 more
Zp70 = $70 ; 11 refs; reads=9 writes=2; used at $C393, CCFE, CDC4, CDCA, +7 more
Zp71 = $71 ; 1 refs; reads=0 writes=1; used at $CC13
Zp72 = $72 ; 2 refs; reads=1 writes=1; used at $D16B, D16D
Zp76 = $76 ; 2 refs; reads=1 writes=1; used at $D151, D156
Zp78 = $78 ; 1 refs; reads=0 writes=1; used at $C1FE
Zp7A = $7A ; 2 refs; reads=1 writes=1; used at $D8FA
Zp7C = $7C ; 12 refs; reads=5 writes=7; used at $C1FA, D7F1, D7F5, E18F, +5 more
Zp7D = $7D ; 4 refs; reads=1 writes=3; used at $DAC3, DCD2, DDFC, DE53
Zp80 = $80 ; 5 refs; reads=1 writes=4; used at $D049, DAA0, DDC9, DDCF, +1 more
Zp82 = $82 ; 5 refs; reads=2 writes=3; used at $CD64, CF5D, D04D, DBC6, +1 more
Zp84 = $84 ; 10 refs; reads=6 writes=4; used at $C2DE, DACD, DAD1, DC72, +6 more
Zp85 = $85 ; 1 refs; reads=1 writes=0; used at $DC80
Zp86 = $86 ; 6 refs; reads=2 writes=4; used at $CEB0, CEEF, D027, D04B, +2 more
Zp87 = $87 ; 1 refs; reads=0 writes=1; used at $D2AF
Zp88 = $88 ; 5 refs; reads=1 writes=4; used at $CEB2, CF27, CF48, CF53, +1 more
Zp89 = $89 ; 1 refs; reads=0 writes=1; used at $D2B3
Zp8A = $8A ; 3 refs; reads=2 writes=1; used at $D827, D82C, D911
Zp8B = $8B ; 6 refs; reads=2 writes=4; used at $C281, D821, D853, D8D8
Zp8C = $8C ; 8 refs; reads=5 writes=3; used at $CCA8, D7DE, D823, D82F, +4 more
Zp8D = $8D ; 12 refs; reads=9 writes=3; used at $C2A9, CCD7, D90F, F2F3, +7 more
Zp90 = $90 ; 23 refs; reads=20 writes=3; used at $C213, C247, D208, D804, +18 more
Zp91 = $91 ; 20 refs; reads=10 writes=10; used at $D867, DE2F, EB6E, EC53, +15 more
Zp92 = $92 ; 8 refs; reads=5 writes=3; used at $E19D, E1A5, E20A, E212, +4 more
Zp94 = $94 ; 2 refs; reads=1 writes=1; used at $F0DE, F71F
Zp96 = $96 ; 1 refs; reads=1 writes=0; used at $F141
Zp99 = $99 ; 2 refs; reads=2 writes=0; used at $E196, F12B
Zp9C = $9C ; 14 refs; reads=10 writes=4; used at $DE39, EB42, EE31, EE8D, +10 more
Zp9D = $9D ; 2 refs; reads=1 writes=1; used at $E1C1, E1FC
Zp9F = $9F ; 1 refs; reads=0 writes=1; used at $F0FC
ZpA7 = $A7 ; 20 refs; reads=10 writes=10; used at $EB46, EC57, EC66, EEC9, +12 more
ZpA8 = $A8 ; 10 refs; reads=5 writes=5; used at $E1DC, E1F6, E22D, E232, +4 more
ZpAF = $AF ; 2 refs; reads=1 writes=1; used at $EC86, EC90
ZpB2 = $B2 ; 16 refs; reads=13 writes=3; used at $D86E, DB3D, DE33, DEB4, +11 more
ZpB3 = $B3 ; 4 refs; reads=2 writes=2; used at $E1D1, E1D6, EFB4
ZpBD = $BD ; 11 refs; reads=7 writes=4; used at $DE89, EB4F, EF4E, EF53, +7 more
ZpBE = $BE ; 1 refs; reads=0 writes=1; used at $E1BD
ZpC1 = $C1 ; 2 refs; reads=1 writes=1; used at $C43E
ZpC5 = $C5 ; 2 refs; reads=1 writes=1; used at $F125, F129
ZpD3 = $D3 ; 4 refs; reads=2 writes=2; used at $F737, F739, F741
ZpD4 = $D4 ; 9 refs; reads=6 writes=3; used at $DBE6, DBEF, DCC1, F743, +4 more
ZpD5 = $D5 ; 6 refs; reads=5 writes=1; used at $D520, F630, F76D, F773, +2 more
ZpD6 = $D6 ; 5 refs; reads=3 writes=2; used at $D526, DE5A, F758, F794, +1 more
ZpD7 = $D7 ; 7 refs; reads=6 writes=1; used at $D957, DBCB, DBE8, DBFD, +3 more
ZpD9 = $D9 ; 2 refs; reads=1 writes=1; used at $DE37, DE69
ZpDA = $DA ; 5 refs; reads=3 writes=2; used at $C20F, DD24, DD6A, DD9C
ZpDB = $DB ; 1 refs; reads=0 writes=1; used at $C216
ZpDC = $DC ; 7 refs; reads=4 writes=3; used at $EF9A, EFA6, EFB2, EFD8, +1 more
ZpDD = $DD ; 3 refs; reads=1 writes=2; used at $EFA4, EFAC
ZpDE = $DE ; 5 refs; reads=3 writes=2; used at $C07D, C0A6, D8F8, F147
ZpDF = $DF ; 10 refs; reads=4 writes=6; used at $E1E9, E208, E21D, E238, +2 more
ZpE0 = $E0 ; 11 refs; reads=3 writes=8; used at $C840, C84E, CEAE, D021, +6 more
ZpE2 = $E2 ; 5 refs; reads=1 writes=4; used at $C86B, CE5F, CE8D, D12D, +1 more
ZpE4 = $E4 ; 5 refs; reads=1 writes=4; used at $C871, CE63, CE91, D129, +1 more
ZpE6 = $E6 ; 22 refs; reads=14 writes=8; used at $C844, C853, C862, C866, +18 more
ZpE7 = $E7 ; 2 refs; reads=1 writes=1; used at $D28B, D290
ZpE8 = $E8 ; 8 refs; reads=4 writes=4; used at $C848, C85B, C860, C877, +4 more
ZpE9 = $E9 ; 2 refs; reads=1 writes=1; used at $D295, D29A
ZpEA = $EA ; 5 refs; reads=2 writes=3; used at $C84C, C868, C86D, C875, +1 more
ZpF0 = $F0 ; 8 refs; reads=3 writes=5; used at $F9AB, F9C8, F9ED, FA0C, +4 more
ZpF1 = $F1 ; 9 refs; reads=3 writes=6; used at $FA64, FA83, FABC, FAC6, +5 more
ZpF2 = $F2 ; 5 refs; reads=1 writes=4; used at $FB71, FB9E, FBA3, FBBB, +1 more
ZpF3 = $F3 ; 7 refs; reads=5 writes=2; used at $F93C, FC00, FC09, FC11, +3 more
FrameCounter = $F3 ; semantic alias ; semantic alias
ZpF4 = $F4 ; 10 refs; reads=5 writes=5; used at $F9AF, F9B1, F9CC, F9D0, +5 more
ZpF5 = $F5 ; 2 refs; reads=1 writes=1; used at $F98C, FC22
ZpF6 = $F6 ; 5 refs; reads=4 writes=1; used at $FC27, FC5A, FCD1, FCD9, +1 more
ZpF7 = $F7 ; 1 refs; reads=0 writes=1; used at $FC2C
ZpF8 = $F8 ; 4 refs; reads=2 writes=2; used at $FC15, FC56, FC58
ZpF9 = $F9 ; 8 refs; reads=5 writes=3; used at $FC36, FCC4, FCCD, FCCF, +2 more
ZpFA = $FA ; 4 refs; reads=2 writes=2; used at $FC31, FCFA, FD03
ZpFB = $FB ; 10 refs; reads=2 writes=8; used at $C0F3, C173, C1CE, C2A2, +6 more
ZpFC = $FC ; 13 refs; reads=4 writes=9; used at $D443, DAB9, DDAB, DDE8, +6 more
ZpFD = $FD ; 2 refs; reads=1 writes=1; used at $FC0D, FC64
ZpFE = $FE ; 15 refs; reads=6 writes=9; used at $D3A9, D42E, F007, F933, +6 more
ZpFF = $FF ; 15 refs; reads=5 writes=10; used at $CE5A, D43E, D460, E270, +7 more