#118 STRICT: remove the eng-page eject-key hook -- soft keys never pilot-eject
Operator called binary-faithful; the trace agrees. The hook (bfc072b/
fa3d634) fired ALONGSIDE the key's authored per-page function, so on a
weapon eng page an armed pilot pressing UNJAM/EJECT to clear a jam would
self-destruct -- a destructive hijack of a real control. Removed; the
authored press model stands alone: pilot KEYPAD bank (desktop numpad) or
the PANIC key while armed. The flashing engEject cell is the invite lamp.
Regressions: armed PANIC press -> PUNCH-OUT (1); armed soft-key 0x0B press
-> no eject (0); streamed ammo-eject route untouched (the hook was purely
additive).
Remaining marked deviations, both flagged in code and handoff: the coolant
arm hysteresis (0.05/0.06) and the Panic-button->keypad desktop wire (the
pod's physical matrix emulated).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
675fe68cb0
commit
d86b65d7aa
@@ -2631,36 +2631,14 @@ void
|
||||
//----------------------------------------
|
||||
buttonActivateModeMask[rio_event.Data.Unit] = mode_mask;
|
||||
|
||||
// THE ENG-PAGE EJECT KEY [T3 PORT CONVENIENCE -- a marked DEVIATION,
|
||||
// #118]: side keys 0x0B/0x23/0x03 are the eng-page EJECT position
|
||||
// (engEject lamp 0x85 = kBTEngBankTop-4). IN THE BINARY these soft
|
||||
// keys NEVER pilot-eject: every page routes them to a real authored
|
||||
// function (weapon pages: EjectAmmo 0xB; myomer pages: seek toggle 9;
|
||||
// the streamed .CTL dump has no 0x200000 records), and the flashing
|
||||
// engEject lamp is the INVITE -- the 1995 press was the pilot KEYPAD
|
||||
// / PANIC key beside it. The pod eject chain itself was LIVE in 4.10
|
||||
// (master perf FUN_004a9b5c+0x10 evaluates per frame; an earlier
|
||||
// "unfinished" note here was wrong). This hook adds the glass-layer
|
||||
// convenience the operator asked for: while PANIC is armed AND that
|
||||
// bank shows an ENG page, the flashing key ALSO forwards as a
|
||||
// pilot-keypad press. Runs in the drain (game thread -- mode_mask
|
||||
// in hand; a first cut queried the mode manager from the window
|
||||
// thread and crashed on the unbound TU global).
|
||||
{
|
||||
const int a = rio_event.Data.Unit;
|
||||
unsigned engBits =
|
||||
(a == 0x0B) ? 0x001Eu : // bank 1: eng modes aux 1-4
|
||||
(a == 0x23) ? 0x03C0u : // bank 2: eng modes aux 5-8
|
||||
(a == 0x03) ? 0x7800u : 0u; // bank 3: eng modes aux 9-12
|
||||
if (engBits != 0
|
||||
&& ((unsigned)mode_mask & 0x200000u) != 0
|
||||
&& ((unsigned)mode_mask & engBits) != 0)
|
||||
{
|
||||
ControlsKey eject_key = '0';
|
||||
Check(&keyboardGroup[KeyboardPilot]);
|
||||
keyboardGroup[KeyboardPilot].ForceUpdate(&eject_key, mode_mask);
|
||||
}
|
||||
}
|
||||
// (NO eng-page eject-key hook: REMOVED 2026-08-03 for strict binary
|
||||
// fidelity. The soft keys 0x0B/0x23/0x03 never pilot-eject in the
|
||||
// binary -- every page routes them to authored functions (weapon eng
|
||||
// pages: EjectAmmo 0xB -- a hook here HIJACKED the unjam while armed,
|
||||
// self-destructing a pilot trying to clear a jam). The flashing
|
||||
// engEject lamp is the INVITE; the authored press is the pilot KEYPAD
|
||||
// bank / PANIC key, both live on the desktop.)
|
||||
|
||||
break;
|
||||
|
||||
case RIO::ButtonReleasedEvent:
|
||||
|
||||
Reference in New Issue
Block a user