From 609dde8051a9928a7a18d82516a1cb865e9e1f64 Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Tue, 4 Aug 2026 02:57:03 -0500 Subject: [PATCH] #118 strict: REMOVE the coolant-clause hysteresis -- the flap is authentic The operator's causality challenge held up: the hysteresis did NOT fix the audio tick (the tick persisted past it and was the autofire scalpel's 20/sec jam clicks -- no game bug; control run without autofire is clean). With the dead-code claim corrected, the boundary flap is AUTHENTIC: the arcade evaluated the identical plain < 0.05 compare per frame, so a pod hovering at the line flapped the same way -- cosmetic mode/lamp churn, crash-free across hundreds of bench transitions. Deviation unjustified; the binary's compare is restored. Verified on the reverted build: armed PANIC press -> PUNCH-OUT (1); audio profile clean (sparse explosions/warnings only). Eject deviation ledger now: ONE item -- the Panic-button->pilot-keypad desktop wire (hardware emulation, not behavior). Co-Authored-By: Claude Fable 5 --- game/reconstructed/mech.cpp | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/game/reconstructed/mech.cpp b/game/reconstructed/mech.cpp index 41b930c..f9124ae 100644 --- a/game/reconstructed/mech.cpp +++ b/game/reconstructed/mech.cpp @@ -572,25 +572,19 @@ int extern int BTPlayerExperienceSimLive(void *owner_mech); // btplayer.cpp (+0x25c; int noviceSim = (BTPlayerExperienceSimLive(this) == 0); // NULL-player reads LIVE) - // COOLANT-CLAUSE HYSTERESIS [T3 smoothing deviation, 2026-08-03]: the - // binary's clause is a plain `< 0.05` compare, evaluated per frame from - // the master performance (FUN_004a9b5c+0x10 -- the arcade DID run this; - // an earlier "dead code" note here was wrong, corrected same day: the - // absolute-pointer scan missed the E8-relative call). A bank fraction - // hovering exactly at the threshold is a degenerate oscillation the pod - // plausibly never sat in (leaks drain THROUGH the boundary); live under - // flips the panic-arm mode EVERY FRAME (observed: hundreds of ON/off - // pairs), churning the mode mask, the lamp, and the arm audio cue into a - // ~10 Hz stutter tick. The engine's own idiom for exactly this is the - // dual-threshold pair (HeatSink coolantActive: 0.003 on / 0.0025 off); - // mirrored here: ARM below 0.05 (the binary constant @0049fb50), stay - // armed until the fraction RECOVERS above 0.06. No new members -- the - // current ejectPermitted is the state. - Scalar coolantGate = ejectPermitted ? 0.06f : 0.05f; + // (A short-lived coolant-clause HYSTERESIS was tried and REMOVED + // 2026-08-03, same night, for strict fidelity: the binary's clause is + // this plain `< 0.05` compare, evaluated per frame by the master + // performance (FUN_004a9b5c+0x10) -- the ARCADE ran exactly this, so a + // bank fraction hovering at the threshold flapped the panic-arm mode at + // frame rate there too. The flap is cosmetic churn (mode mask + lamp; + // hundreds of transitions ran crash-free on the bench) and was NOT the + // operator's audio tick -- that was the autofire scalpel spamming the + // per-pull jam click, no game bug. Keep the authentic compare.) ejectPermitted = (liveWeapons < ejectMinWeapons) // @0x448 floor (inert at 0) || (liveGenerators == 0) - || (coolantFrac < coolantGate) // _DAT_0049fb50 + hysteresis + || (coolantFrac < 0.05f) // _DAT_0049fb50 || (gimped && noviceSim); return ejectPermitted; }