mirror of
https://github.com/libretro/virtualjaguar-libretro.git
synced 2026-11-07 12:47:58 -10:00
One binary (test/tools/test_texdump, in make test via the in-tree test/roms/yarc.j64 so it never skips) runs five sessions and asserts: - contract_freeze: manifest hash set equals the committed golden list (test/expected/texdump_yarc.txt, 28 hashes) — the CI tripwire that makes the day-one identity contract real - determinism: two consecutive dump-on runs, identical sets - engine_independence: fast vs accurate blitter, identical sets - inertness_on: per-frame framebuffer hashes AND savestate digests at frames 300/600 identical dump-on vs dump-off - png_validity: signature, IHDR dims vs manifest, every chunk CRC-32 via src/core/crc32.c — no external decoder - palette_not_identity: a CLUT-change re-blit of known bytes mints no new hash and appends exactly one sighting row No in-tree public ROM blits more than its two boot-time code copies with SRCEN (yarc and jagniccc both render via the OP — measured), so instead of the spec's second-ROM fallback the tool drives a synthetic blit battery through the real bus/launch path (JaguarWriteLong -> BlitterWriteWord -> TexDumpLaunch, TEST_EXPORTS ABI): 26 scripted tiles across 1/2/4/8/16/32bpp and both source channels. The fast-blitter session runs LAST: a fast->accurate engine flip leaves cross-load static residue that moves the next session's savestate digest even with texture dump never enabled (pre-existing leak, reproduced independently; see the run-order note in the tool). test_blitter_mmio gains the texdump stubs its standalone link now needs; test_option_visibility asserts the 16bpp knob is hidden while the dump option sits at its disabled default. Co-Authored-By: Claude Opus 5 <[email protected]>