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
This commit is contained in:
tmerritt committed 2026-10-21 16:43:54 -04:00
1 parent 0a49ee6da7
commit 6740550ac0
55 files changed
+160669 -46941

No files matched your search

+52 -47
View File
@@ -2,66 +2,71 @@
## Status
**Pass 3.** All address-derived `Label_XXXX` definitions replaced;
every `jsr`/`jmp` operand symbolic; hardware-register operands resolved
via `apply_symbols.py` (0 residue); audit comments aligned; `make`
stays byte-identical.
`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the
result against `rom.nes`:
```
Byte-identical ROM verified.
```
**Pass 3 complete; promoted.** `prg.s` is a traced disassembly with all
address-derived labels replaced, all `jsr`/`jmp` operands symbolic, hardware
registers named via `symbols.inc`, and `apply_symbols.py` reporting 0 residue.
Code coverage: 16,925 / 32,768 bytes (51.7%).
`make` assembles and verifies byte-identical to `rom.nes`.
## ROM
| Property | Value |
|----------|-------|
| Format | iNES |
| Mapper | 0 |
| Board | NROM-256 |
| Mapper | 0 (NROM) |
| PRG | 32 KB |
| CHR | 8 KB |
| Mirroring | Vertical |
| Four-screen VRAM | no |
| Battery | no |
| PRG | 32 KB (2 x 16 KB), mapped at CPU $8000-$FFFF |
| CHR | 8 KB (1 x 8 KB) |
| Trainer | none |
| Footer | none |
| NMI vector | $82D6 |
| RESET vector | $8258 |
| IRQ vector | $FFF0 |
| ROM file | `Kung Fu (U) [a1].nes` |
| SHA-256 | `9e8383b3bd99ccf9bc972c57d37599604e969aebab7a8f0c9428112fafb6b82d` |
### Header notes
## Power-on flow
- none
RESET enters at `$8258`:
## Open work
sei ; CPU:$8258 PRG:0258 78
cld ; CPU:$8259 PRG:0259 D8
lda #$00 ; CPU:$825A PRG:025A A9 00
sta PPUCTRL ; CPU:$825C PRG:025C 8D 00 20
ldx #$FF ; CPU:$825F PRG:025F A2 FF
txs ; CPU:$8261 PRG:0261 9A
lda PPUSTATUS ; CPU:$8262 PRG:0262 AD 02 20
asl a ; CPU:$8265 PRG:0265 0A
bcc Reset_OnCarryClear ; CPU:$8266 PRG:0266 90 FA
lda PPUSTATUS ; CPU:$8268 PRG:0268 AD 02 20
asl a ; CPU:$826B PRG:026B 0A
bcc Reset_OnCarryClear2 ; CPU:$826C PRG:026C 90 FA
- **Pass 1** - run `nesdis.py` over `prg.bin` to produce the code/data
split. The tracer reads the vectors from the last six bytes of the PRG
image, so the split seeds correctly.
- **Pass 1** must emit the canonical audit comment
`; CPU:$C123 PRG:0123 AD 21 03` at column 35 for every instruction.
- **Pass 2** - replace the address-derived `Label_XXXX` names and the raw
`$XXXX` call operands.
- **Pass 3** - semantic zero-page aliases (applied only at the sites where
their role is proven) and named data tables.
- **Promotion** to `NROM/<name>/` once Pass 3 is done, as `git mv`.
NMI handler at `$82D6`:
## Files
lda Zp10 ; CPU:$82D6 PRG:02D6 A5 10
and #$7F ; CPU:$82D8 PRG:02D8 29 7F
sta PPUCTRL ; CPU:$82DA PRG:02DA 8D 00 20
sta Zp10 ; CPU:$82DD PRG:02DD 85 10
lda #$00 ; CPU:$82DF PRG:02DF A9 00
sta PPUMASK ; CPU:$82E1 PRG:02E1 8D 01 20
sta OAMADDR ; CPU:$82E4 PRG:02E4 8D 03 20
ldy #$02 ; CPU:$82E7 PRG:02E7 A0 02
| File | Purpose |
|------|---------|
| `prg.s` | Pass 0 PRG include (replaced by the Pass 1 disassembly) |
| `header.s` | iNES header include |
| `chr.s` | CHR include |
| `prg.bin` | 32768 bytes (32 KB) PRG image |
| `chr.bin` | 8192 bytes (8 KB) CHR image |
| `rom.nes` | byte-identical copy of the original ROM |
| `linker.cfg` | HEADER / PRG / CHR memory areas |
| `symbols.inc` | NES hardware register names |
| `locals.inc` | zero-page aliases (empty at Pass 0) |
| `Makefile` | build and byte-identity check |
## Data-table inventory (Pass 3)
- `$8000-$8257` (600 bytes) - `LevelHandlerPointerTable`
- `$8437-$84E9` (179 bytes) - `LevelObjectDefinitionTable`
- `$8CA2-$8DE6` (325 bytes) - `SpriteOamEntryTable`
- `$904A-$981F` (2006 bytes) - `EnemyNameTextTable`
- `$9828-$A495` (3182 bytes) - `EnemySpritePatternTable`
- `$B6E1-$B727` (71 bytes) - `LevelObjectSpawnTable`
- `$BB83-$BDD1` (591 bytes) - `SpriteOamAttributeTable`
- `$CDEB-$CFCA` (480 bytes) - `EnemyAnimationFrameTable`
- `$D385-$D3C4` (64 bytes) - `LevelSceneryData`
- `$DAE6-$DAE9` (4 bytes) - `LevelSceneryPadding`
- `$DB48-$F830` (7401 bytes) - `LevelGraphicData`
- `$F981-$F9B8` (56 bytes) - `EnemyMovementSpeedTable`
- `$FA36-$FA89` (84 bytes) - `EnemyMovementDeltaTable`
## Build
```
Byte-identical ROM verified.
```
File diff suppressed because it is too large. Load diff
+167 -29
View File
@@ -4,38 +4,154 @@
; 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 ; 28 refs; reads=13 writes=15; used at $8274, 8277, 8287, 82AA, +22 more
Zp01 = $01 ; 14 refs; reads=5 writes=9; used at $8270, 827C, 8282, 828C, +8 more
Zp02 = $02 ; 5 refs; reads=3 writes=2; used at $83DB, 83E9, 83EE, 8FF3, +1 more
Zp03 = $03 ; 5 refs; reads=2 writes=3; used at $83E1, 8FE9, 9012, 9014
Zp04 = $04 ; 1 refs; reads=0 writes=1; used at $8FEB
Zp10 = $10 ; 9 refs; reads=5 writes=4; used at $82D6, 82DD, 839F, 8E30, +5 more
Zp00 = $00 ; 219 refs; reads=100 writes=119; used at $8274, 8277, 8287, 82AA, +203 more
Zp01 = $01 ; 135 refs; reads=55 writes=80; used at $8270, 827C, 8282, 828C, +115 more
Zp02 = $02 ; 82 refs; reads=37 writes=45; used at $83DB, 83E9, 83EE, 8F3D, +66 more
Zp03 = $03 ; 62 refs; reads=27 writes=35; used at $83E1, 8EE8, 8F20, 8F25, +55 more
Zp04 = $04 ; 36 refs; reads=15 writes=21; used at $8FEB, AA15, AA21, AADA, +28 more
Zp05 = $05 ; 43 refs; reads=23 writes=20; used at $8EEE, 8F51, A6FF, A70A, +36 more
Zp06 = $06 ; 27 refs; reads=11 writes=16; used at $8F3F, 8F63, A5E7, A5F2, +23 more
Zp07 = $07 ; 25 refs; reads=14 writes=11; used at $8EEA, 8F04, 8F0A, 8F22, +20 more
Zp08 = $08 ; 9 refs; reads=4 writes=5; used at $8F27, 8F29, 8F65, B337, +3 more
Zp0A = $0A ; 44 refs; reads=22 writes=22; used at $8F37, 8F5F, AEF3, AF24, +37 more
Zp0B = $0B ; 9 refs; reads=3 writes=6; used at $B6AD, B6D4, B6D6, BFDC, +5 more
Zp0D = $0D ; 8 refs; reads=4 writes=4; used at $C14F, C15B, C160, C16C, +4 more
Zp0E = $0E ; 7 refs; reads=3 writes=4; used at $B738, B753, B794, C168, +3 more
Zp0F = $0F ; 26 refs; reads=14 writes=12; used at $B401, B40C, B40E, B73C, +21 more
Zp10 = $10 ; 11 refs; reads=6 writes=5; used at $82D6, 82DD, 839F, 8E30, +7 more
Zp11 = $11 ; 2 refs; reads=1 writes=1; used at $8325, 832C
Zp12 = $12 ; 1 refs; reads=0 writes=1; used at $8FD2
Zp12 = $12 ; 16 refs; reads=13 writes=3; used at $874F, 8981, 8EA0, 8FD2, +12 more
Zp13 = $13 ; 1 refs; reads=0 writes=1; used at $8FD7
Zp14 = $14 ; 4 refs; reads=3 writes=1; used at $8381, 9020, 9028, 903B
Zp14 = $14 ; 6 refs; reads=5 writes=1; used at $8381, 87CC, 8948, 9020, +2 more
Zp15 = $15 ; 4 refs; reads=2 writes=2; used at $88FF, 902A, 9031, 9047
Zp18 = $18 ; 3 refs; reads=2 writes=1; used at $8350, 8360
Zp19 = $19 ; 3 refs; reads=2 writes=1; used at $8356, 8362
Zp1A = $1A ; 2 refs; reads=1 writes=1; used at $8364
Zp1B = $1B ; 2 refs; reads=1 writes=1; used at $8366
Zp18 = $18 ; 19 refs; reads=15 writes=4; used at $8350, 8360, 8505, AAA5, +12 more
Zp19 = $19 ; 15 refs; reads=14 writes=1; used at $8356, 8362, ABA6, AC29, +10 more
Zp1A = $1A ; 7 refs; reads=6 writes=1; used at $8364, C59D, D017, D0A3, +2 more
Zp1B = $1B ; 4 refs; reads=3 writes=1; used at $8366, A9F2, D45C
Zp1C = $1C ; 2 refs; reads=1 writes=1; used at $8368
Zp1D = $1D ; 2 refs; reads=1 writes=1; used at $836A
Zp1E = $1E ; 2 refs; reads=1 writes=1; used at $836C
Zp1F = $1F ; 2 refs; reads=1 writes=1; used at $836E
Zp20 = $20 ; 4 refs; reads=1 writes=3; used at $8338, 833E, 8394
Zp21 = $21 ; 3 refs; reads=2 writes=1; used at $8342, 8346
Zp35 = $35 ; 3 refs; reads=1 writes=2; used at $8391, 83D0, 88D8
Zp49 = $49 ; 2 refs; reads=1 writes=1; used at $834B
Zp4F = $4F ; 4 refs; reads=2 writes=2; used at $83E3, 83E5, 88DE
Zp50 = $50 ; 3 refs; reads=2 writes=1; used at $8321, 83A7, 88DC
Zp51 = $51 ; 5 refs; reads=4 writes=1; used at $83B2, 83BD, 83D4, 88D4, +1 more
Zp52 = $52 ; 2 refs; reads=1 writes=1; used at $82F5, 831A
Zp5C = $5C ; 1 refs; reads=1 writes=0; used at $88F4
Zp5D = $5D ; 1 refs; reads=1 writes=0; used at $88F6
Zp63 = $63 ; 1 refs; reads=0 writes=1; used at $83F9
Zp66 = $66 ; 1 refs; reads=0 writes=1; used at $831C
Zp20 = $20 ; 6 refs; reads=2 writes=4; used at $8338, 833E, 8394, 84EF, +1 more
Zp21 = $21 ; 21 refs; reads=9 writes=12; used at $8342, 8346, 877E, 89E1, +16 more
Zp23 = $23 ; 4 refs; reads=3 writes=1; used at $A49A, A83F, A87A, A881
Zp24 = $24 ; 2 refs; reads=1 writes=1; used at $A517, A823
Zp25 = $25 ; 6 refs; reads=3 writes=3; used at $D150, D19C, D1C4, D225, +2 more
Zp26 = $26 ; 4 refs; reads=2 writes=2; used at $89F2, 89F8, C1D4, C1D9
Zp27 = $27 ; 1 refs; reads=1 writes=0; used at $9820
Zp2A = $2A ; 2 refs; reads=1 writes=1; used at $A77F, A79E
Zp2B = $2B ; 26 refs; reads=10 writes=16; used at $ACBD, AEB5, B11C, B126, +22 more
Zp30 = $30 ; 24 refs; reads=13 writes=11; used at $8BAC, CFDC, D02E, D306, +20 more
Zp32 = $32 ; 4 refs; reads=2 writes=2; used at $D045, D06B, D137, D147
Zp33 = $33 ; 3 refs; reads=1 writes=2; used at $8DE9, A9D3, AAE0
Zp34 = $34 ; 4 refs; reads=2 writes=2; used at $8C23, 8C29, D791, D79B
Zp35 = $35 ; 4 refs; reads=1 writes=3; used at $8391, 83D0, 88D8, 8C68
Zp36 = $36 ; 4 refs; reads=2 writes=2; used at $8874, 88BF, 8956, B276
Zp37 = $37 ; 2 refs; reads=1 writes=1; used at $8766, 8788
Zp38 = $38 ; 12 refs; reads=6 writes=6; used at $89AD, 89B3, 8B00, 8B87, +8 more
Zp39 = $39 ; 5 refs; reads=3 writes=2; used at $8990, 89B9, 8A17, 8C56, +1 more
Zp3A = $3A ; 7 refs; reads=3 writes=4; used at $8709, 8745, D16C, D171, +3 more
Zp3B = $3B ; 3 refs; reads=2 writes=1; used at $A743, AA19, AAD4
Zp3C = $3C ; 6 refs; reads=2 writes=4; used at $A97F, D1C2, D23B, D356, +2 more
Zp3D = $3D ; 2 refs; reads=1 writes=1; used at $AB5C, AC3B
Zp3E = $3E ; 2 refs; reads=1 writes=1; used at $C7CF, C7D5
Zp3F = $3F ; 19 refs; reads=8 writes=11; used at $AED2, AF7A, AF8E, B012, +15 more
Zp44 = $44 ; 10 refs; reads=4 writes=6; used at $D08B, D0AB, D1B6, D221, +6 more
Zp47 = $47 ; 3 refs; reads=1 writes=2; used at $8DF6, CD15, CD21
Zp49 = $49 ; 14 refs; reads=12 writes=2; used at $834B, 84F1, 8838, 8A22, +9 more
Zp4A = $4A ; 5 refs; reads=2 writes=3; used at $84F3, A9D7, A9DB, AAFB
Zp4B = $4B ; 22 refs; reads=11 writes=11; used at $842E, 8997, 8A42, 8A4D, +18 more
Zp4C = $4C ; 24 refs; reads=12 writes=12; used at $899B, 8A44, 8A6B, 8A7E, +20 more
Zp4D = $4D ; 5 refs; reads=3 writes=2; used at $8A46, 8A89, 8A9C, BA68, +1 more
Zp4E = $4E ; 8 refs; reads=4 writes=4; used at $8A20, 8A49, 8A64, 8A67, +4 more
Zp4F = $4F ; 5 refs; reads=2 writes=3; used at $83E3, 83E5, 873B, 88DE
Zp50 = $50 ; 4 refs; reads=2 writes=2; used at $8321, 83A7, 8738, 88DC
Zp51 = $51 ; 12 refs; reads=7 writes=5; used at $83B2, 83BD, 83D4, 876E, +6 more
Zp52 = $52 ; 25 refs; reads=2 writes=23; used at $82F5, 831A, 840A, 8570, +21 more
Zp53 = $53 ; 14 refs; reads=14 writes=0; used at $8572, 865E, AC34, AC7E, +10 more
Zp54 = $54 ; 1 refs; reads=1 writes=0; used at $88C2
Zp55 = $55 ; 16 refs; reads=14 writes=2; used at $853D, 8683, 86F4, 87C8, +12 more
Zp56 = $56 ; 3 refs; reads=2 writes=1; used at $853F, 8C6A
Zp58 = $58 ; 5 refs; reads=3 writes=2; used at $854B, 8C5C, 8C5E, 8C66
Zp5A = $5A ; 2 refs; reads=1 writes=1; used at $862E, BA4E
Zp5B = $5B ; 2 refs; reads=1 writes=1; used at $8634, BA54
Zp5C = $5C ; 9 refs; reads=7 writes=2; used at $889D, 88CC, 88F4, 8942, +3 more
Zp5D = $5D ; 3 refs; reads=3 writes=0; used at $88F6, 8944, 895C
Zp5E = $5E ; 5 refs; reads=4 writes=1; used at $8541, 8652, A98D, AA04, +1 more
Zp5F = $5F ; 40 refs; reads=39 writes=1; used at $854D, 855A, 858A, 85A6, +36 more
Zp60 = $60 ; 4 refs; reads=2 writes=2; used at $8AEE, 8B52, 8B98
Zp61 = $61 ; 6 refs; reads=3 writes=3; used at $897D, 8B74, 8EAA, A74C, +2 more
Zp62 = $62 ; 8 refs; reads=3 writes=5; used at $85D5, 8EC0, A80E, A817, +2 more
Zp63 = $63 ; 8 refs; reads=4 writes=4; used at $83F9, 8B08, 8B8E, 8EAE, +4 more
Zp64 = $64 ; 9 refs; reads=5 writes=4; used at $85EE, 8B7D, 8EB6, A7AB, +5 more
Zp65 = $65 ; 19 refs; reads=16 writes=3; used at $85BD, 8B70, A748, A759, +13 more
Zp66 = $66 ; 5 refs; reads=3 writes=2; used at $831C, A7D6, A7D8, C09C, +1 more
Zp67 = $67 ; 26 refs; reads=9 writes=17; used at $8B06, A4DE, A513, A51D, +22 more
Zp68 = $68 ; 34 refs; reads=20 writes=14; used at $87DB, 87E4, 89E9, 89ED, +26 more
Zp69 = $69 ; 56 refs; reads=46 writes=10; used at $85CE, 87D6, 87E0, 8B0D, +52 more
Zp6A = $6A ; 12 refs; reads=8 writes=4; used at $8743, 8790, 87CE, 8E14, +8 more
Zp6B = $6B ; 4 refs; reads=3 writes=1; used at $857B, 8721, A78E, AAF4
Zp6C = $6C ; 9 refs; reads=5 writes=4; used at $8772, C4F3, C538, C70C, +5 more
Zp6E = $6E ; 2 refs; reads=1 writes=1; used at $B228, CA0C
Zp6F = $6F ; 3 refs; reads=1 writes=2; used at $83F5, 83FD, 88E6
Zp70 = $70 ; 3 refs; reads=2 writes=1; used at $8863, 8E79, 8E7D
Zp71 = $71 ; 3 refs; reads=1 writes=2; used at $86B6, 877A, 8E55
Zp72 = $72 ; 2 refs; reads=1 writes=1; used at $A51B, A827
Zp73 = $73 ; 2 refs; reads=1 writes=1; used at $A72D, A746
Zp74 = $74 ; 7 refs; reads=4 writes=3; used at $85F3, A733, A73E, A9D1, +1 more
Zp75 = $75 ; 5 refs; reads=3 writes=2; used at $A9DE, AA0F, AA12, AAE2
Zp76 = $76 ; 2 refs; reads=1 writes=1; used at $A9F8, AAD8
Zp77 = $77 ; 2 refs; reads=1 writes=1; used at $AA00, AA17
Zp78 = $78 ; 3 refs; reads=2 writes=1; used at $AB65, AB79
Zp79 = $79 ; 6 refs; reads=3 writes=3; used at $8DF8, CD19, CD1D, CD27, +2 more
Zp7A = $7A ; 30 refs; reads=13 writes=17; used at $C4C4, C8C0, CD79, CFE2, +23 more
Zp7B = $7B ; 35 refs; reads=18 writes=17; used at $C155, C19D, C1A5, C271, +30 more
Zp7C = $7C ; 9 refs; reads=4 writes=5; used at $CFEA, D0B1, D178, D404, +1 more
Zp7D = $7D ; 28 refs; reads=17 writes=11; used at $A4B3, A4D0, A50D, A590, +20 more
Zp7E = $7E ; 11 refs; reads=8 writes=3; used at $85DC, A67B, A7ED, A952, +7 more
Zp7F = $7F ; 4 refs; reads=2 writes=2; used at $D3D9, D448, D44C
Zp80 = $80 ; 43 refs; reads=24 writes=19; used at $840E, A718, A9AA, AA3F, +39 more
Zp82 = $82 ; 2 refs; reads=1 writes=1; used at $FFFA
Zp85 = $85 ; 4 refs; reads=3 writes=1; used at $85D9, BE18, C89A, D486
Zp86 = $86 ; 5 refs; reads=1 writes=4; used at $8410, 8872, 8B96, 8BEA, +1 more
Zp87 = $87 ; 47 refs; reads=34 writes=13; used at $841A, A6B3, A9A4, AAAB, +42 more
Zp8C = $8C ; 8 refs; reads=7 writes=1; used at $85AC, C89E, C8E9, C930, +4 more
Zp8D = $8D ; 2 refs; reads=0 writes=2; used at $841C, 85B0
Zp8E = $8E ; 32 refs; reads=29 writes=3; used at $8426, A639, ACD7, AD67, +28 more
Zp93 = $93 ; 11 refs; reads=11 writes=0; used at $A684, A961, A969, C8F3, +7 more
Zp94 = $94 ; 21 refs; reads=20 writes=1; used at $842A, 8BB7, A63B, A687, +17 more
Zp95 = $95 ; 2 refs; reads=2 writes=0; used at $AC6B, BAA8
Zp99 = $99 ; 2 refs; reads=2 writes=0; used at $B9AC, CB69
Zp9C = $9C ; 1 refs; reads=1 writes=0; used at $B930
Zp9F = $9F ; 25 refs; reads=20 writes=5; used at $8412, AA43, ACCE, AD61, +20 more
ZpA4 = $A4 ; 7 refs; reads=7 writes=0; used at $A67F, A956, C8AF, D491, +3 more
ZpA5 = $A5 ; 1 refs; reads=0 writes=1; used at $8414
ZpA6 = $A6 ; 2 refs; reads=2 writes=0; used at $AC66, BAA4
ZpAA = $AA ; 2 refs; reads=2 writes=0; used at $B98C, CB5E
ZpAD = $AD ; 1 refs; reads=1 writes=0; used at $B913
ZpB0 = $B0 ; 40 refs; reads=24 writes=16; used at $8420, 8C9D, AAB9, AC23, +36 more
ZpB5 = $B5 ; 5 refs; reads=3 writes=2; used at $85A2, D1F6, D451, D4A1, +1 more
ZpB6 = $B6 ; 8 refs; reads=3 writes=5; used at $8422, 85A4, 8BE2, 8C00, +4 more
ZpB7 = $B7 ; 55 refs; reads=16 writes=39; used at $8C92, A637, A656, AD97, +49 more
ZpBC = $BC ; 30 refs; reads=5 writes=25; used at $CFE0, CFE8, CFFA, D0AF, +24 more
ZpBD = $BD ; 6 refs; reads=2 writes=4; used at $8BC7, 8BD9, 8BDD, C50D, +1 more
ZpBE = $BE ; 14 refs; reads=13 writes=1; used at $8549, 8718, AAEC, AB19, +10 more
ZpC0 = $C0 ; 60 refs; reads=41 writes=19; used at $8416, A9B8, AAAF, ACC2, +55 more
ZpC5 = $C5 ; 8 refs; reads=6 writes=2; used at $85D3, D554, D55E, D590, +4 more
ZpC6 = $C6 ; 3 refs; reads=2 writes=1; used at $8B3A, 8BA7, 8C04
ZpC7 = $C7 ; 27 refs; reads=14 writes=13; used at $B120, B133, B135, B159, +18 more
ZpCE = $CE ; 39 refs; reads=23 writes=16; used at $8B81, 8C99, AACC, ABEF, +34 more
ZpD3 = $D3 ; 10 refs; reads=6 writes=4; used at $85E9, B25F, D060, D064, +6 more
ZpD4 = $D4 ; 12 refs; reads=9 writes=3; used at $85FD, A831, A833, ABBE, +8 more
ZpD5 = $D5 ; 1 refs; reads=0 writes=1; used at $8618
ZpD9 = $D9 ; 3 refs; reads=1 writes=2; used at $B7CE, B7D0, B806
ZpDC = $DC ; 1 refs; reads=0 writes=1; used at $B8D5
ZpDF = $DF ; 61 refs; reads=35 writes=26; used at $8C95, AAC4, AAD0, ABAD, +46 more
ZpE4 = $E4 ; 13 refs; reads=10 writes=3; used at $85E4, B261, D058, D429, +9 more
ZpE5 = $E5 ; 18 refs; reads=13 writes=5; used at $85F8, A82E, A837, ABAB, +10 more
ZpE6 = $E6 ; 1 refs; reads=0 writes=1; used at $861D
ZpEA = $EA ; 5 refs; reads=2 writes=3; used at $B7CB, B7D4, B808
ZpED = $ED ; 1 refs; reads=0 writes=1; used at $B8D7
ZpF0 = $F0 ; 8 refs; reads=4 writes=4; used at $FB6A, FBA3, FBAA, FBAC, +2 more
ZpF1 = $F1 ; 3 refs; reads=1 writes=2; used at $F8E2, F8F4, F902
ZpF2 = $F2 ; 6 refs; reads=3 writes=3; used at $F92A, F948, F95F, F96D, +2 more
@@ -47,8 +163,30 @@ ZpF7 = $F7 ; 2 refs; reads=1 writes=1; used at $FB77, FCE2
ZpF8 = $F8 ; 8 refs; reads=5 writes=3; used at $FB86, FC68, FC71, FC73, +2 more
ZpF9 = $F9 ; 7 refs; reads=6 writes=1; used at $FB7C, FBAE, FBDA, FC2E, +3 more
ZpFA = $FA ; 1 refs; reads=0 writes=1; used at $FB81
ZpFB = $FB ; 3 refs; reads=1 writes=2; used at $8927, F84F, FB3C
ZpFC = $FC ; 10 refs; reads=5 writes=5; used at $F84D, F9D9, F9E0, F9E4, +2 more
ZpFD = $FD ; 2 refs; reads=1 writes=1; used at $F84B, FAF6
ZpFE = $FE ; 6 refs; reads=3 writes=3; used at $F849, F967, F972, F976
ZpFF = $FF ; 8 refs; reads=4 writes=4; used at $F847, F8F0, F8F6, F8FA, +1 more
ZpFB = $FB ; 8 refs; reads=1 writes=7; used at $8710, 8777, 88B4, 8927, +4 more
ZpFC = $FC ; 23 refs; reads=5 writes=18; used at $8784, 8BB2, 8BD3, BEE7, +15 more
ZpFD = $FD ; 10 refs; reads=2 writes=8; used at $887F, 89B7, A5C9, A85D, +6 more
ZpFE = $FE ; 11 refs; reads=3 writes=8; used at $8B85, 8C1C, A727, C50B, +5 more
ZpFF = $FF ; 22 refs; reads=4 writes=18; used at $B055, B083, B193, B1CA, +15 more
; Pass 3 semantic aliases (proven from the disassembly):
PpuCtrlShadow = Zp10
VramWritePtrLo = Zp00
VramWritePtrHi = Zp01
DispatchPtrLo = Zp02
DispatchPtrHi = Zp03
PlayerIndex = Zp69
PlayerSide = ZpC5
SpriteIndex = Zp5F
GameState = ZpC0
LevelIndex = Zp50
PlayerX = ZpB0
PlayerY = ZpB7
EnemyIndex = Zp87
EnemyHealth = ZpDF
PpuMaskShadow = Zp86
GameMode = Zp9F
LifeCount = ZpA5
SpriteScore = ZpB6
SpriteTimer = Zp80
SpriteTimer2 = Zp8D
+17401 -1727
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -1,3 +1,4 @@
# routinemap (seed)
8258 Reset
82D6 NmiHandler
FFF0 IrqHandler
1 # routinemap (seed)
2 8258
3 82D6
4 FFF0