Hatris (U)
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, links them with ld65 and compares the
result against rom.nes:
Byte-identical ROM verified.
ROM
| Property | Value |
|---|---|
| Format | iNES |
| Mapper | 1 |
| Board | MMC1 |
| Mirroring | Horizontal |
| Four-screen VRAM | no |
| Battery | no |
| PRG | 128 KB (8 x 16 KB), at file offset $0010 |
| CHR | none |
| Trainer | none |
| Footer | none |
| NMI vector | $C20B |
| RESET vector | $C000 |
| IRQ vector | $C292 |
| ROM file | Hatris (U).nes |
| SHA-256 | fe81fb62536274aad06a7acdfd46ef61459a2c44a98bf60a8c946115935a748d |
Header notes
- none
Open work
- Pass 1 - run
nesdis.pyoverprg.binto 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 03at column 35 for every instruction. - Pass 2 - replace the address-derived
Label_XXXXnames and the raw$XXXXcall 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, asgit mv.
Files
| File | Purpose |
|---|---|
prg.s |
Pass 0 PRG include (replaced by the Pass 1 disassembly) |
header.s |
iNES header include |
prg.bin |
131072 bytes (128 KB) PRG image |
rom.nes |
byte-identical copy of the original ROM |
linker.cfg |
HEADER / PRG memory areas |
symbols.inc |
NES hardware register names |
locals.inc |
zero-page aliases (empty at Pass 0) |
Makefile |
build and byte-identity check |