Combat: AUTHENTIC weapon groups -- streamed per-mech button bindings + the real fire chain (task #5)
The recovered system: fire channels = LBE4ControlsManager buttonGroups (0x40/0x45/0x46/0x47); default groups = the per-mech type-6 controls-map resource in BTL4.RES, installed by the T0 CreateStreamedMappings the port already called -- it needed only the TriggerState attribute (id 0x13 PINNED to the binary value; fireImpulse@0x31C is the binary's TriggerState) and an input feed. Keyboard/harness now push press/release edges into the button groups; the gBT*Trigger bypasses, per-type keyboard split and 1,0 pulse hack are retired -- weapons sharing a button fire TOGETHER (madcat Trigger = 4 weapons). Myomers @4b9550/@4b95b8 misattribution corrected (they are MechWeapon ConfigureMappables/ChooseButton). Verified 2-node: kill through the authentic chain (12 hits vs ~36 pre-groups). Config-mode session (regrouping UI) = the remaining stage, KB-scoped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
4554ea543a
commit
8ed6184d65
+20
-10
@@ -110,16 +110,26 @@ authentic path scoped.
|
||||
- **MechControlsMapper look/eyepoint commit** — reconstructed but its offsets collide with declared
|
||||
members; arbitrate before enabling (no port consumer yet). The fire-trigger-through-mapper is
|
||||
still the `gBTWeaponTrigger` bring-up.
|
||||
- **Weapon groups / per-button fire channels (decomp-anchored 2026-07-09)** — MechWeapon message
|
||||
handlers id 9 **`ConfigureMappables`** (`FUN_004b9550`) and id 10 **`ChooseButton`**
|
||||
(`FUN_004b95b8`), table @0x511860 region: ConfigureMappables binds the weapon's
|
||||
`fireImpulse`@0x31C to mapper fire-channel #N (msg value 1-based; <1 unbinds; mapper = roster
|
||||
slot 0, vtable +0x38 register / +0x3c unregister; weapon+0x110 = the bound-state), ChooseButton
|
||||
re-binds (vtable +0x44) — the pod's in-cockpit weapon→button GROUPING. Weapons sharing a button
|
||||
fire together; grouping was a PILOT choice (heat management: alpha vs split). The port's
|
||||
SPACE=all-energy / CTRL=missiles split is a stand-in default; the authentic system needs the
|
||||
mapper channel registration + who SENDS the default ConfigureMappables (mission/player setup —
|
||||
not yet traced). Payoff: authentic weapon groups + a path to chain-fire.
|
||||
- **✅ Weapon groups — the AUTHENTIC defaults + fire path LIVE (task #5, 2026-07-11) [T1/T2].**
|
||||
The system decoded end-to-end: a fire "channel" = a physical `buttonGroup` slot in the global
|
||||
`LBE4ControlsManager` (fire buttons 0x40 Trigger / 0x45 Pinky / 0x46 ThumbLow / 0x47 ThumbHigh);
|
||||
binding = a permanent mode-0x10000 DIRECT mapping button → the weapon's **TriggerState** attr
|
||||
(id **0x13**, = `fireImpulse@0x31C`; the binary MechWeapon table's ONLY attribute @0x511890);
|
||||
the weapon self-edge-detects (CheckFireEdge @4b9608). **The default grouping is NOT messages —
|
||||
it is the per-mech type-6 controls-map resource in BTL4.RES** ("Thrustmaster"/"L4" variants;
|
||||
e.g. madcat: Trigger={4 weapons}, ThumbHigh={2}), installed at `MakeViewpointEntity` by the
|
||||
ENGINE's `CreateStreamedMappings` (T0, L4CTRL.cpp) — which the port already called; it needed
|
||||
only the TriggerState attribute published (id PINNED to 0x13 — our attr-id chain is 6 short of
|
||||
the binary's; full binary attr-table dump in the task #5 scan) + an input feed. Keyboard now
|
||||
pushes press/release edges into the buttonGroups (SPACE→Trigger, '2'→ThumbLow, '3'/CTRL→
|
||||
ThumbHigh; BT_AUTOFIRE pulses the Trigger); the gBT*Trigger bypasses + pulse hack are retired.
|
||||
VERIFIED 2-node: full kill through the authentic chain (12 hits vs ~36 pre-groups = the
|
||||
4-weapon trigger volley + crit cascade). **Remaining (the config-mode session):** handlers
|
||||
id 9/10 (@4b9550/@4b95b8 — corrected: they were mislabeled as Myomers fns), the L4 mapper
|
||||
Enter/ExitConfiguration completion (StartMappableButtonsConfigure + mode 0x8000), the
|
||||
ConfigMapGauge unguard — the pod's in-cockpit REGROUPING UI (pilot heat-management choice);
|
||||
mapper vtable corrections: +0x38 Enter / +0x3c Exit / +0x44 RIO AddOrErase (Thrustmaster
|
||||
no-ops it).
|
||||
- **Myomers authentic coupling** — the structural un-stub is INERT (mover feed + heat-gen no-op).
|
||||
Real coupling needs the advanced-damage gate (`OwnerAdvancedDamage`/`FUN_004ad7d4` → the owning
|
||||
**BTPlayer** `mech+0x190`+0x260, NOT 0xBD3 — see the mech+0x190 item above) + `MoverAttach` routing
|
||||
|
||||
Reference in New Issue
Block a user