Files
psxrecomp/runtime/src
Matthew Stanley 7ee7921c32 fix(cpu): disable idle-loop cycle-skip by default — breaks memcard SIO timing
The idle skip fast-forwards guest time to the next INTERNAL device event,
but an SIO/memory-card byte transfer in flight is not modeled as a bounding
deadline. At boot the skip jumps past the write-completion the card driver
polls for, so Tomba2's "checking memory card" livelocks (frame rate
collapses to a few fps in the dirty-RAM interp; the game never advances).
With it on the hang is near-deterministic; off, boot is reliable (9/9).

Make it opt-in (PSX_IDLE_SKIP=1). Re-enable by default only once the skip
is bounded by the SIO transfer/IRQ deadline — devices_cycles_to_next_
internal_event() must account for an in-flight card-byte completion. A
rarer, cold-cache-correlated variant of the same SIO race remains (overlay
capture/compile churn perturbing the poll window); tracked separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:39:51 -07:00
..
2026-07-06 15:33:41 -07:00