Gitea #6: secondary MFD Damage/Critical/Heat cycling -- reconstruct the
NotifyOfDisplayModeChange override (vtbl+0x4C @4d1ae4) + wire desktop 'N'
The secondary screen's schematic selector was mislabeled: @004d1ae4 (the
bits-18..20 ModeSecondary* mask swap) was reconstructed as a non-virtual
"SetControlMode" that nothing called, so the desktop stayed pinned on the
Damage view. The binary's L4 vtable @0051e440 pins the truth:
+0x48 = @004d1acc <- CycleControlModeMessageHandler (FUN_004afbe0):
forwards to the base RET no-op @004b048c. A BAS/MID/ADV
control-mode change never touches the secondary view
(empirically confirmed: BT_MODECYCLE_TEST cycles the CONTROL
MODE lamp, mask bits 18-20 unchanged, schematic stays ARMOR).
+0x4C = @004d1ae4 <- CycleDisplayModeMessageHandler (FUN_004afcac):
THE Damage/Critical/Heat selector, indexed by displayMode
(table @0051dbe4 = ModeSecondaryDamage/Critical/Heat).
Authentic pod inputs (streamed type-6 .CTL EventMappings, dumped via the
new BT_CTRLMAP_LOG EVENT records): secondary-panel button 0x15 -> msg
0x15 CycleDisplayMode (manual p13, the "'Mech status Info center" bottom
left of the secondary screen), button 0x18 -> msg 0x14 CycleControlMode
(manual p6, top right), 0x10/0x11 -> ZoomIn/Out. The DOS keyboard
fallbacks (Keypress 0x13d/0x13e = extended F3/F4) are dead under the
WinTesla VK map, hence the desktop pin.
Port wiring (the M/ModeCycle pattern): key N / pad RightThumb -> action
DisplayCycle -> gBTDisplayCycle -> CycleDisplayModeNow() -- the same body
the pod console button message drives. Both .MAP profiles + the
compiled-in default updated.
Verified live (docked gauges + BT_SHOT, BT_VIEWCYCLE_TEST): the sec
panel cycles ARMOR DAMAGE silhouette -> CRITICAL DAMAGE subsystem list
-> HEAT DAMAGE colored list, mask 0x450421 -> 0x490421 -> 0x510421; M
control-mode cycling un-regressed (BAS/MID/ADV lamp cycles, view pinned).
Diags: BT_MODE_LOG, BT_VIEWCYCLE_TEST=<frame>, BT_MODECYCLE_TEST=<frame>,
BT_CTRLMAP_LOG now dumps EVENT records. KB: gauges-hud secondary-view
section rewritten, CLASSMAP +0x48/+0x4C slots, decomp-reference env
gates, GAUGE_COMPOSITE phase-4 entry resolved.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
2ae9bd43ae
commit
1d6339b226
@@ -70,6 +70,7 @@ enum BTActionID
|
||||
BTActLookBehind,
|
||||
BTActAllStop,
|
||||
BTActModeCycle,
|
||||
BTActDisplayCycle, // Gitea #6: secondary schematic cycle (Damage/Critical/Heat)
|
||||
BTActValve,
|
||||
BTActFlush, // Gitea #7: HELD = coolant flush (InjectCoolant)
|
||||
BTActConfigHold,
|
||||
@@ -193,6 +194,7 @@ static const BTName sActionNames[] =
|
||||
{
|
||||
{"ViewToggle", BTActViewToggle}, {"LookBehind", BTActLookBehind},
|
||||
{"AllStop", BTActAllStop}, {"ModeCycle", BTActModeCycle},
|
||||
{"DisplayCycle", BTActDisplayCycle},
|
||||
{"Valve", BTActValve}, {"Flush", BTActFlush}, {"ConfigHold", BTActConfigHold},
|
||||
{"Generator1", BTActGenerator1}, {"Generator2", BTActGenerator2},
|
||||
{"Generator3", BTActGenerator3}, {"Generator4", BTActGenerator4},
|
||||
@@ -266,6 +268,7 @@ static const char *sDefaultProfile =
|
||||
"key C action Valve\n"
|
||||
"key H action Flush\n"
|
||||
"key M action ModeCycle\n"
|
||||
"key N action DisplayCycle\n"
|
||||
"key V action ViewToggle\n"
|
||||
"key B action LookBehind\n"
|
||||
"key F5 action Generator1\n"
|
||||
@@ -289,6 +292,7 @@ static const char *sDefaultProfile =
|
||||
"pad Y action ViewToggle\n"
|
||||
"pad X action LookBehind\n"
|
||||
"pad Start action ModeCycle\n"
|
||||
"pad RightThumb action DisplayCycle\n"
|
||||
"pad Back action Valve\n";
|
||||
|
||||
//=============================================================================
|
||||
@@ -963,6 +967,7 @@ void
|
||||
case BTActLookBehind: next.lookBehind = 1; break;
|
||||
case BTActAllStop: next.allStop = 1; break;
|
||||
case BTActModeCycle: next.modeCycle = 1; break;
|
||||
case BTActDisplayCycle: next.displayCycle = 1; break;
|
||||
case BTActValve: next.valve = 1; break;
|
||||
case BTActFlush: next.flush = 1; break;
|
||||
case BTActConfigHold: next.configHold = 1; break;
|
||||
|
||||
Reference in New Issue
Block a user