mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
465f926ecf
Four-peer rollback desynced under load (R4, host behind): the guests predicted the slow host's pad, hash-confirmed the tick among themselves through the one shared peer ring, then promoted the host's real pad into history only (hc-silent promote) while the host simulated it. The host stayed forked; its recovery episode was then refused as a "zombie load" behind the guests' (wrongly) agreed tip. - Hash confirm is a quorum over every occupied peer seat (rnet_hc_set_peer_mask / note_peer_from, recomp-net) for three or more seats; two seats keep the one-peer chain. - A peer more than 4 ticks behind the others' inputs sheds its own view (psx_mod_render_local_view status FAST_FORWARD, held 60 ticks), so the presentation-only pass goes before the simulation slips. PSX_NET_LOCAL_VIEW_SHED=0 keeps it. - The admit-stall watchdog counts time without progress: a remote input tip that advances restarts it, so a slow peer is waited for. PSX_NET_ADMIT_STALL_MS (20000) and PSX_NET_LIVENESS_MS (1500) configure it. - Pins recomp-net fix/rollback-span-stall. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>