# Elevator Action (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: 19,446 / 32,768 bytes (59.3%). `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 | $8081 | | RESET vector | $8000 | | IRQ vector | $8000 | ## Power-on flow RESET enters at `$8000`: sei ; CPU:$8000 PRG:0000 78 cld ; CPU:$8001 PRG:0001 D8 ldx #$FF ; CPU:$8002 PRG:0002 A2 FF txs ; CPU:$8004 PRG:0004 9A lda #$10 ; CPU:$8005 PRG:0005 A9 10 sta PPUCTRL ; CPU:$8007 PRG:0007 8D 00 20 lda PPUSTATUS ; CPU:$800A PRG:000A AD 02 20 bpl Reset_OnNonnegative ; CPU:$800D PRG:000D 10 FB lda #$FF ; CPU:$800F PRG:000F A9 FF ldy #$24 ; CPU:$8011 PRG:0011 A0 24 sta $0200,y ; CPU:$8013 PRG:0013 99 00 02 dey ; CPU:$8016 PRG:0016 88 NMI handler at `$8081`: sta NmiSaveA ; CPU:$8081 PRG:0081 85 9A stx NmiSaveX ; CPU:$8083 PRG:0083 86 9B sty NmiSaveY ; CPU:$8085 PRG:0085 84 9C lda ZpFA ; CPU:$8087 PRG:0087 A5 FA beq NmiHandler_Loop ; CPU:$8089 PRG:0089 F0 03 jmp Sub_81D6 ; CPU:$808B PRG:008B 4C D6 81 lda PpuCtrlShadow ; CPU:$808E PRG:008E A5 88 and #$7F ; CPU:$8090 PRG:0090 29 7F ## Data-table inventory (Pass 3) - `$83CB-$844E` (132 bytes) - `EnemySpawnOffsetTable` - `$8628-$973D` (4374 bytes) - `EnemyHandlerPointerTable` - `$9CA1-$9D61` (193 bytes) - `EnemyAttributeMaskTable` - `$A240-$A24F` (16 bytes) - `EnemySpriteXPositionTable` - `$A281-$A284` (4 bytes) - `LevelDataPointerTable` - `$A348-$A3E2` (155 bytes) - `EnemyMoveCodeTable` - `$A3F9-$A46E` (118 bytes) - `EnemySpawnScriptTable` - `$AA9B-$B50C` (2674 bytes) - `LevelTilemapData` - `$B525-$B58C` (104 bytes) - `EnemySpritePatternTable` - `$B599-$BB2A` (1426 bytes) - `EnemyTileGraphicData` - `$BDB5-$BDC9` (21 bytes) - `EnemyScriptPointerTable` - `$BE15-$BE1D` (9 bytes) - `EnemyScriptEntryTable` - `$C2F1-$C320` (48 bytes) - `SpriteOamAttributeTable` - `$C487-$C837` (945 bytes) - `SpriteOamEntryTable` - `$D0DE-$D0ED` (16 bytes) - `EnemySpeedTable` - `$D187-$D2B5` (303 bytes) - `LevelObjectPointerTable` - `$D586-$D599` (20 bytes) - `EnemySpawnRecordTable` - `$D6B4-$D73D` (138 bytes) - `EnemyPaletteRecordTable` - `$E61D-$E79D` (385 bytes) - `EnemyMovementDeltaTable` - `$F0E1-$F0E6` (6 bytes) - `EnemyFallingSpeedTable` - `$F1E3-$F4DA` (760 bytes) - `LevelSceneryTileData` - `$F6FC-$F703` (8 bytes) - `PpuBitMaskTable` - `$F956-$F975` (32 bytes) - `LevelHandlerPointerTable` - `$F9BB-$F9C2` (8 bytes) - `PpuInverseBitMaskTable` - `$FA73-$FFFF` (1421 bytes) - `LevelSceneryLayoutData` ## Build ``` Byte-identical ROM verified. ```