From 667ad183395dad950491551e083b0b06f69b4319 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Fri, 26 Sep 2025 23:35:31 -0400 Subject: [PATCH 1/2] Disable PR_ITEM_DEBRIS detections in staffsync --- src/g_demo.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/g_demo.cpp b/src/g_demo.cpp index 2b99a3134..4e08d1be5 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -303,18 +303,23 @@ boolean G_ConsiderEndingDemoRead(void) } // Demo failed sync during a sync test! Log the failure to be reported later. -static void G_FailStaffSync(staffsync_reason_t reason, UINT32 extra) +static boolean G_FailStaffSync(staffsync_reason_t reason, UINT32 extra) { if (!staffsync) - return; + return true; if (staffsync_results[staffsync_failed].reason != 0) - return; + return false; + + if (reason == SYNC_RNG && extra == PR_ITEM_DEBRIS) + return false; staffsync_results[staffsync_failed].map = gamemap; memcpy(&staffsync_results[staffsync_failed].name, player_names[consoleplayer], sizeof(player_names[consoleplayer])); staffsync_results[staffsync_failed].reason = reason; staffsync_results[staffsync_failed].extra = extra; + + return true; } void G_ReadDemoExtraData(void) @@ -486,11 +491,16 @@ void G_ReadDemoExtraData(void) if (demosynced) { - CONS_Alert(CONS_WARNING, "Demo playback has desynced (RNG class %d)!\n", i); - G_FailStaffSync(SYNC_RNG, i); + if (G_FailStaffSync(SYNC_RNG, i)) + { + CONS_Alert(CONS_WARNING, "Demo playback has desynced (RNG class %d)!\n", i); + storesynced = false; + } + } + else + { + storesynced = false; } - - storesynced = false; } } demosynced = storesynced; From 3d16ecd7e9cce3ad20d1662d2b1ff4e0965670c7 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Sat, 27 Sep 2025 20:38:42 -0400 Subject: [PATCH 2/2] Staffsync excludes many RNG classes --- src/g_demo.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/g_demo.cpp b/src/g_demo.cpp index 4e08d1be5..7ecc422b6 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -305,14 +305,30 @@ boolean G_ConsiderEndingDemoRead(void) // Demo failed sync during a sync test! Log the failure to be reported later. static boolean G_FailStaffSync(staffsync_reason_t reason, UINT32 extra) { + if (demo.attract != DEMO_ATTRACT_OFF) // Don't shout about RNG desyncs in titledemos + return false; + if (!staffsync) return true; if (staffsync_results[staffsync_failed].reason != 0) return false; - if (reason == SYNC_RNG && extra == PR_ITEM_DEBRIS) - return false; + if (reason == SYNC_RNG) + { + switch (extra) + { + case PR_ITEM_DEBRIS: + case PR_RANDOMAUDIENCE: + case PR_VOICES: + case PR_DECORATION: + case PR_RANDOMANIM: + CONS_Printf("[!] Ignored desync from RNG class %d\n", extra); + return false; + default: + break; + } + } staffsync_results[staffsync_failed].map = gamemap; memcpy(&staffsync_results[staffsync_failed].name, player_names[consoleplayer], sizeof(player_names[consoleplayer]));