Files
disasm/_wip/NROM/Circus Charlie/README.md
T

69 lines
2.1 KiB
Markdown

# Circus Charlie
## Status
**Pass 0 skeleton.** The project builds and verifies byte-identical to the
original ROM, but no disassembly exists yet: `prg.s` is a single
`.incbin "prg.bin"` of the PRG image.
`make` assembles `header.s`, `prg.s`, `chr.s`, `trailer.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-128 |
| Mirroring | Horizontal |
| Four-screen VRAM | no |
| Battery | no |
| PRG | 16 KB (1 x 16 KB), mapped at CPU $C000-$FFFF |
| CHR | 8 KB (1 x 8 KB) |
| Trainer | none |
| Footer | 127 bytes past the CHR |
| NMI vector | $C05A |
| RESET vector | $C000 |
| IRQ vector | $C007 |
| ROM file | `Circus Charlie.nes` |
| SHA-256 | `e7925b67d577b8d05da01d935d9fe74b66f6487e18922f6c065647c5b13aa252` |
### Header notes
- 127 bytes follow the CHR; they are reproduced by the TRAILER memory area
## 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 |
| `trailer.s` | footer include |
| `prg.bin` | 16384 bytes (16 KB) PRG image |
| `chr.bin` | 8192 bytes (8 KB) CHR image |
| `trailer.bin` | 127 footer bytes |
| `rom.nes` | byte-identical copy of the original ROM |
| `linker.cfg` | HEADER / PRG / CHR / TRAILER memory areas |
| `symbols.inc` | NES hardware register names |
| `locals.inc` | zero-page aliases (empty at Pass 0) |
| `Makefile` | build and byte-identity check |