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; }