DEV Community

Nivando Soares
Nivando Soares

Posted on

Seeded PPU state contracts for the TD2 compare lane

Seeded PPU state contracts in the TD2 compare lane

The latest checkpoint extends the SDL runtime compare lane beyond pixel parity.

What changed

  • --compare JSON now carries state_contract.
  • The contract covers visible PPU and OAM registers, Mode 7 fields, per-layer tilemap/CHR/scroll metadata, and raw VRAM/CGRAM/OAM byte parity.
  • --fail-on-compare-diff now fails on either pixel drift or semantic drift.

Why this matters

Pixel diffs only tell me that a frame changed. This new contract catches silent state drift before it turns into a later visual regression, and it gives the port the comparison shape that future callback/state traces can plug into.

Validation

  • make -C port test
  • frame300_compare: 0 mismatched pixels, 0/58 state failures
  • frame1086_compare: 0 mismatched pixels, 0/59 state failures

Next gate

The next step is moving from static seeded-state parity to real callback/state execution and trusted multi-frame intro trace contracts.

Top comments (0)