Pass 3 _wip: Slalom (U), Kung Fu (U), Othello (U) semantic naming complete Pass 3 _wip: apply symbols (0 residue) for Slalom (U), Kung Fu (U), Othello (U) Pass 2/3 _wip: 10 NROM projects (Elevator Action, 1942, Tag Team Wrestling, Galaga, Kung Fu a1, Stack-Up, Magmax, Ms Pac-Man Namco, Soccer, Sqoon) Promote 13 _wip/NROM projects to NROM/ (Slalom, Kung Fu, Othello, Elevator Action, 1942, Tag Team Wrestling, Galaga, Kung Fu a1, Stack-Up, Magmax, Ms Pac-Man Namco, Soccer, Sqoon) Pass 2/3 _wip: 5 CNROM games (Tiger-Heli, Paperboy, Last Starfighter, Mighty Bomb Jack, Kung-Fu Heroes) Docs: document CDL capture + re-trace workflow in TODO.md Adds more code for - Elevator Action (U) - Kung Fu (U) - Othello (U) - Slalom (U) - Sqoon (U)
68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# Stack-Up (JU)
|
|
|
|
## 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.
|
|
```
|
|
|
|
## ROM
|
|
|
|
| Property | Value |
|
|
|----------|-------|
|
|
| Format | iNES |
|
|
| Mapper | 0 |
|
|
| Board | NROM-256 |
|
|
| Mirroring | Horizontal |
|
|
| 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 | $81AD |
|
|
| RESET vector | $8100 |
|
|
| IRQ vector | $81E6 |
|
|
| ROM file | `Stack-Up (JU).nes` |
|
|
| SHA-256 | `3ab6bc99246783a6bf7083481027fe358ccdb147dcf1165eaf08aaf4e1b06548` |
|
|
|
|
### Header notes
|
|
|
|
- none
|
|
|
|
## Open work
|
|
|
|
- **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`.
|
|
|
|
## Files
|
|
|
|
| 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 |
|