Pass 1 _wip: 23 projects at Pass 1, byte-identical builds verified

This commit is contained in:
tmerritt committed 2026-10-21 12:49:08 -04:00
1 parent 691b2bc23c
commit b08d65877f
101 files changed
+267311 -750

No files matched your search

+6 -4
View File
@@ -2,11 +2,13 @@
## 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.
**Pass 1.** The project builds and verifies byte-identical to the
original ROM (with branch-over-data adjustments). `prg.s` is a traced
disassembly classifying bytes as reachable code or data, with every
instruction carrying a trailing audit comment. Unreached bytes remain
as explicit `.byte` blocks; no ROM byte is deleted or reformatted.
`make` assembles `header.s`, `prg.s`, `chr.s`, `trailer.s`, links them with `ld65` and compares the
`make` assembles `header.s`, `prg.s`, `chr.s`, links them with `ld65` and compares the
result against `rom.nes`:
```
+37 -4
View File
@@ -1,4 +1,37 @@
; Zero-page aliases for this project.
; Empty at Pass 0. Pass 1+ adds proven semantic names here;
; addresses whose role is not yet determined keep the neutral ZpXX
; form.
; Circus Charlie 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.
Zp56 = $56 ; 1 refs; reads=1 writes=0; used at $B7FF
Zp68 = $68 ; 1 refs; reads=1 writes=0; used at $A689
Zp6A = $6A ; 2 refs; reads=1 writes=1; used at $B7FD, B808
Zp6B = $6B ; 2 refs; reads=1 writes=1; used at $B802, B80A
Zp6D = $6D ; 2 refs; reads=1 writes=1; used at $A659
Zp70 = $70 ; 2 refs; reads=1 writes=1; used at $A64F, A66A
Zp71 = $71 ; 1 refs; reads=0 writes=1; used at $A68F
Zp72 = $72 ; 1 refs; reads=0 writes=1; used at $A699
Zp74 = $74 ; 2 refs; reads=1 writes=1; used at $A653, A67F
Zp76 = $76 ; 2 refs; reads=1 writes=1; used at $B3B2, B3C0
Zp77 = $77 ; 3 refs; reads=2 writes=1; used at $A685, A6DC, A7CC
Zp78 = $78 ; 2 refs; reads=1 writes=1; used at $A661, A679
Zp7B = $7B ; 1 refs; reads=1 writes=0; used at $A655
Zp7C = $7C ; 1 refs; reads=1 writes=0; used at $B3B0
Zp7E = $7E ; 3 refs; reads=1 writes=2; used at $8C0D, 8C0F, B408
Zp7F = $7F ; 5 refs; reads=3 writes=2; used at $8C03, 8C05, B40C, B412
Zp80 = $80 ; 1 refs; reads=0 writes=1; used at $A66F
Zp81 = $81 ; 1 refs; reads=0 writes=1; used at $A691
Zp82 = $82 ; 1 refs; reads=0 writes=1; used at $A69D
Zp84 = $84 ; 1 refs; reads=0 writes=1; used at $A683
Zp85 = $85 ; 2 refs; reads=1 writes=1; used at $A6C1
Zp88 = $88 ; 2 refs; reads=1 writes=1; used at $A6D0
Zp8C = $8C ; 4 refs; reads=3 writes=1; used at $8C07, A636, A663, A677
Zp90 = $90 ; 1 refs; reads=1 writes=0; used at $A623
Zp9A = $9A ; 1 refs; reads=0 writes=1; used at $A7C5
ZpA0 = $A0 ; 1 refs; reads=1 writes=0; used at $A6F1
ZpB0 = $B0 ; 1 refs; reads=1 writes=0; used at $A62D
ZpCA = $CA ; 1 refs; reads=1 writes=0; used at $A638
ZpD0 = $D0 ; 1 refs; reads=0 writes=1; used at $A9B3
ZpD4 = $D4 ; 1 refs; reads=0 writes=1; used at $A9AF
ZpFA = $FA ; 2 refs; reads=1 writes=1; used at $A7D2, A7D7