# Magmax (U) ## Status **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: 11,613 / 32,768 bytes (35.4%). `make` assembles and verifies byte-identical to `rom.nes`. ## ROM | Property | Value | |----------|-------| | Format | iNES | | Mapper | 0 (NROM) | | PRG | 32 KB | | CHR | 8 KB | | Mirroring | Horizontal | | NMI vector | $BD33 | | RESET vector | $BC33 | | IRQ vector | $BC33 | ## Power-on flow RESET enters at `$BC33`: lda #$00 ; CPU:$BC33 PRG:3C33 A9 00 sta PPUCTRL ; CPU:$BC35 PRG:3C35 8D 00 20 lda PPUSTATUS ; CPU:$BC38 PRG:3C38 AD 02 20 bpl Reset_OnNonnegative ; CPU:$BC3B PRG:3C3B 10 FB sei ; CPU:$BC3D PRG:3C3D 78 cld ; CPU:$BC3E PRG:3C3E D8 ldx #$FF ; CPU:$BC3F PRG:3C3F A2 FF txs ; CPU:$BC41 PRG:3C41 9A ldx #$7F ; CPU:$BC42 PRG:3C42 A2 7F lda $057E,x ; CPU:$BC44 PRG:3C44 BD 7E 05 cmp $BC33,x ; CPU:$BC47 PRG:3C47 DD 33 BC bne Reset_Loop ; CPU:$BC4A PRG:3C4A D0 06 NMI handler at `$BD33`: lda #$07 ; CPU:$BD33 PRG:3D33 A9 07 sta OAMDMA ; CPU:$BD35 PRG:3D35 8D 14 40 lda #$00 ; CPU:$BD38 PRG:3D38 A9 00 sta PPUMASK ; CPU:$BD3A PRG:3D3A 8D 01 20 jsr Sub_CEAB ; CPU:$BD3D PRG:3D3D 20 AB CE lda Zp6B ; CPU:$BD40 PRG:3D40 A5 6B sta PPUMASK ; CPU:$BD42 PRG:3D42 8D 01 20 lda Zp6C ; CPU:$BD45 PRG:3D45 A5 6C ## Data-table inventory (Pass 3) - `$8000-$BC32` (15411 bytes) - `UnreachedRomData` - `$BDC2-$BDF6` (53 bytes) - `ObjectHandlerPointerTable` - `$C471-$C485` (21 bytes) - `ObjectAttributeTable` - `$C7C3-$C860` (158 bytes) - `ObjectMovementTable` - `$C8AD-$C9BE` (274 bytes) - `LevelGraphicData` - `$C9E6-$CA01` (28 bytes) - `ObjectPointerTable` - `$CA9A-$CADF` (70 bytes) - `LevelTilePatternData` ## Build ``` Byte-identical ROM verified. ```