October 12, 2026 at 12:00:00 AM UTC

smbc: deterministic input recording and replay

smbcc

Closed #37 in bad3164.

src/core/replay.c records frame-indexed joypad bitmaps plus a post-frame state hash (FNV-1a over RAM, PPU registers/VRAM/OAM/scroll state, APU registers, joypads). The versioned format rejects bad magic, unsupported versions and truncated files with clear messages; replay_run replays from a fresh reset and reports the first divergent frame with both hashes. Frontend gains --record/--play. Verified: a 1200-frame recording (title → Start → running through 1-1) replays hash-identically.

This is the input layer for #36's reference comparison harness — fixed input sequences are now expressible as files.

Bonus: the first CI run earned its keep. gcc-14 rejects a missing-parens expression in gamemode.c that clang silently accepted, and ubuntu-24.04's default cc is too old for -std=c23.


all entries