mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
7ee7921c32
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>