#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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
d86b65d7aa
commit
609dde8051
+10
-16
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user