# Othello (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: 14,220 / 32,768 bytes (43.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 | $D6B4 | | RESET vector | $8000 | | IRQ vector | $804E | ## Power-on flow RESET enters at `$8000`: sei ; CPU:$8000 PRG:0000 78 lda #$00 ; CPU:$8001 PRG:0001 A9 00 sta PPUCTRL ; CPU:$8003 PRG:0003 8D 00 20 sta PPUMASK ; CPU:$8006 PRG:0006 8D 01 20 lda PPUSTATUS ; CPU:$8009 PRG:0009 AD 02 20 bpl Reset_OnNonnegative ; CPU:$800C PRG:000C 10 FB lda PPUSTATUS ; CPU:$800E PRG:000E AD 02 20 bmi Reset_OnNegative ; CPU:$8011 PRG:0011 30 FB lda PPUSTATUS ; CPU:$8013 PRG:0013 AD 02 20 bpl Reset_OnNonnegative2 ; CPU:$8016 PRG:0016 10 FB lda PPUSTATUS ; CPU:$8018 PRG:0018 AD 02 20 bmi Reset_OnNegative2 ; CPU:$801B PRG:001B 30 FB NMI handler at `$D6B4`: pha ; CPU:$D6B4 PRG:56B4 48 txa ; CPU:$D6B5 PRG:56B5 8A pha ; CPU:$D6B6 PRG:56B6 48 tya ; CPU:$D6B7 PRG:56B7 98 pha ; CPU:$D6B8 PRG:56B8 48 lda #$00 ; CPU:$D6B9 PRG:56B9 A9 00 sta OAMADDR ; CPU:$D6BB PRG:56BB 8D 03 20 lda #$02 ; CPU:$D6BE PRG:56BE A9 02 ## Data-table inventory (Pass 3) - `$8350-$8367` (24 bytes) - `BoardCellParameterTable` - `$851E-$854D` (48 bytes) - `PlayerColorNameTable` - `$8661-$8699` (57 bytes) - `GameModeNameTable` - `$884A-$888A` (65 bytes) - `BoardCellNameTable` - `$8B57-$8B66` (16 bytes) - `SlotGameText` - `$8C80-$8C8B` (12 bytes) - `PushBButtonText` - `$9003-$9012` (16 bytes) - `BoardMoveOffsetTable` - `$92BF-$9336` (120 bytes) - `BoardCellCharsetTable` - `$9555-$9561` (13 bytes) - `VsScreenLayoutTable` - `$95AD-$95D6` (42 bytes) - `VsScreenLayoutTable2` - `$9784-$97C3` (64 bytes) - `VsScreenLayoutTable3` - `$98E0-$98F0` (17 bytes) - `PushAButtonText` - `$9967-$997D` (23 bytes) - `CannotCancelText` - `$999B-$99AB` (17 bytes) - `AgainstLevelText` - `$99C7-$99D9` (19 bytes) - `TryAgainText` - `$99E6-$99FF` (26 bytes) - `WinsDrawText` - `$9A09-$9A34` (44 bytes) - `StopPushText` - `$9AD7-$9BAF` (217 bytes) - `HurryGameEndText` - `$9FA6-$9FAD` (8 bytes) - `BoardEdgeGraphic` - `$A263-$A29F` (61 bytes) - `PlayerStartPositionTable` - `$A3E9-$A3F8` (16 bytes) - `BoardFlipMaskTable` - `$ABDB-$ABE2` (8 bytes) - `BoardStateBitsTable` - `$AD3E-$AD53` (22 bytes) - `BoardCellWeightTable` - `$AF00-$AF97` (152 bytes) - `RandomSeedTable` - `$BCCE-$D6A3` (6614 bytes) - `BoardTilemapData` - `$DA49-$DA60` (24 bytes) - `ControllerButtonNames` - `$DD5F-$FFFF` (8865 bytes) - `LevelGraphicData` ## Build ``` Byte-identical ROM verified. ```