Files
psxrecomp/runtime
Matthew Stanley 8b302465d9 timing: load wait-state — oracle value is 4, but PARK it (4 wedges Tomba 2 boot)
Calibrated the main-RAM load wait-state against the Beetle oracle via ruler #2:
a load measures +5 over baseline = base 1 + 4 (vs the old DuckStation-derived 6).
With memory.c=4 the ruler load matches Beetle EXACTLY (+5; load2 +10 vs +11, the
off-by-1 being Beetle's stateful per-load ReadFudge a flat charge can't capture).

HOWEVER memory.c=4 DETERMINISTICALLY WEDGES Tomba 2's BIOS-shell boot — pc=0 /
exception at shell pc 0xBFC2CE64 (epc 0x80000048), reproducible at identical
total_checks across restarts. The faster-but-accurate load cost exposes a
timing-sensitivity in a shell loop (a real bug — likely incomplete device timing
the faster CPU now outruns). A non-booting vehicle blocks FMV + ruler #1
validation, so the value stays 6 to keep the boot live. The accurate 4 is PARKED
behind that wedge: root-cause the shell pc=0 first, then land 4.

Documented in the memory.c comment + ACCURACY_BURNDOWN. Net code change is the
documentation (value unchanged at 6); the finding is the deliverable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 00:56:34 -07:00
..