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>
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
#ifndef PSX_NETPLAY_HASH_CONFIRM_H
|
|
#define PSX_NETPLAY_HASH_CONFIRM_H
|
|
|
|
/*
|
|
* MotK compatibility shim → recomp-net hash_confirm.
|
|
* Prefer rnet_hc_* in new code.
|
|
*/
|
|
|
|
#include "recomp_net/hash_confirm.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define NETPLAY_HC_RING RNET_HC_RING
|
|
typedef RNetHashConfirm NetplayHashConfirm;
|
|
|
|
#define netplay_hc_reset rnet_hc_reset
|
|
#define netplay_hc_prime_after rnet_hc_prime_after
|
|
#define netplay_hc_note_local rnet_hc_note_local
|
|
#define netplay_hc_note_peer rnet_hc_note_peer
|
|
#define netplay_hc_note_peer_from rnet_hc_note_peer_from
|
|
#define netplay_hc_set_peer_mask rnet_hc_set_peer_mask
|
|
#define netplay_hc_resolved_through rnet_hc_resolved_through
|
|
#define netplay_hc_confirm_through rnet_hc_confirm_through
|
|
#define netplay_hc_local_digest rnet_hc_local_digest
|
|
#define netplay_hc_peer_digest rnet_hc_peer_digest
|
|
#define netplay_hc_peek_mismatch rnet_hc_peek_mismatch
|
|
#define netplay_hc_heal_stale_gap rnet_hc_heal_stale_gap
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PSX_NETPLAY_HASH_CONFIRM_H */
|