Files
psxrecomp/runtime/include
Shokunin c7d5b873cd Rollback snaps: the canonical machine at the tick boundary
PSX_RB_DET_SELFTEST on R4 4P showed a replayed save of tick T differing
from the live save of T. Each cause, and the fix:

- Replay's finish_frame poll passed no PC hint (Live used the IRQ resume
  chain); it now uses psx_netplay_snap_resume_hint.
- Devices are serviced lazily up to the next event, so root counters and
  cycles_since_vblank lagged the clock by a host-path amount at save; a
  load re-anchors them at the clock and drops the lag. The save now
  publishes pending cycle charges and services every device to the clock
  first, and renders the SPU up to it.
- GTE / mul-div completion stamps and the load-delay give-back were
  re-anchored at the restored clock on every load, so a stall in flight at
  the snap point cost the live run cycles but the replay none. New
  BS_SEC_CPUTIM carries them relative to the clock.
- The SPU CD-input FIFO was outside the snap and wiped on rollback loads;
  new BS_SEC_SPUCD carries the queued frames and the load keeps them.
- LZCR is serialized as derived from LZCS (the raw backing stays 0 until
  the first LZCS write; guests only ever read the derived value).

Older snaps without the new sections load as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:16:06 -07:00
..
2026-07-29 03:18:10 -04:00
2026-08-07 16:42:43 -04:00
2026-08-03 05:26:37 -04:00
2026-08-07 18:11:35 -04:00
2026-08-03 05:26:37 -04:00
2026-07-31 17:14:35 -04:00
2026-10-05 23:49:55 -07:00
2026-07-31 17:14:35 -04:00
2026-07-29 03:18:10 -04:00
2026-07-31 17:14:35 -04:00
2026-07-29 03:18:10 -04:00
2026-07-29 03:18:10 -04:00
2026-07-29 03:18:10 -04:00