Skip to content

Debugger tile + OAM viewers: independent 2bpp pixel oracle (#53, fourth artifact — completes the chrome) - #61

Merged
InauguralPhysicist merged 2 commits into
masterfrom
debugger-viewers
Aug 4, 2026
Merged

Debugger tile + OAM viewers: independent 2bpp pixel oracle (#53, fourth artifact — completes the chrome)#61
InauguralPhysicist merged 2 commits into
masterfrom
debugger-viewers

Conversation

@InauguralPhysicist

Copy link
Copy Markdown
Contributor

Fourth and final artifact of #53: the tile and OAM viewers. With these, the issue's scope — dock chrome, registers + flags, pause / per-instruction / per-frame stepping, live disassembly with breakpoints, memory viewer, tile/VRAM/OAM views — is complete.

  • Tile viewer (east, under disassembly): 384 VRAM tiles 2bpp-decoded into a 128x192 palette-indexed fb, blitted with gfx_fb (raw color indices, not BGP-mapped — a VRAM view, not a screen view), rebuilt on pause/step.
  • Its oracle is genuinely independent: the harness decodes the DBG_TILEDATA seam (bus bytes read directly) with its own Python 2bpp implementation and compares all 24,576 canvas pixels against gfx_fb's exact palette. --plant-tiles-fault inverts tile 0 in the render fb only — caught at exactly 64 pixels.
  • OAM panel (south, beside memory): 40 sprites as text over mem_read, decode leg vs the DBG_OAM seam, --plant-oam-fault caught.
  • Disassembly window self-sizes to the whole rows its (now halved) east panel can show — partial clipped rows never enter the decode.
  • Full oracle run green on the real display and under xvfb: 4 panels decoded byte/pixel-identical, byte-click, breakpoint round-trip, and all five planted faults caught. Equivalence gate, twins, lint, units green.

Desktop acceptance note: the tile viewer shows Blargg's font glyphs sitting in VRAM — the charset is literally visible in the tile grid.

Closes #53.

🤖 Generated with Claude Code

InauguralPhysicist and others added 2 commits August 4, 2026 15:32
East tile canvas: VRAM 2bpp -> 128x192 indexed fb via gfx_fb, rebuilt
on pause/step; harness reimplements 2bpp independently and compares
all 24576 pixels vs gfx_fb's palette (DBG_TILEDATA seam reads the bus
direct; --plant-tiles-fault caught at exactly tile 0's 64 px). South
OAM text panel over mem_read with its decode leg + plant. Disasm
window self-sizes to its halved east panel. All oracle legs green on
real display + xvfb; equivalence gate, twins, lint, units green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@InauguralPhysicist
InauguralPhysicist merged commit c21b7c7 into master Aug 4, 2026
1 check passed
@InauguralPhysicist
InauguralPhysicist deleted the debugger-viewers branch August 4, 2026 20:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ui: debugger chrome — tile/VRAM viewer, registers, disassembly, stepping (fleet UI ladder, rung 5)

1 participant