diff --git a/context/open-questions.md b/context/open-questions.md index 9049553..5cde9c8 100644 --- a/context/open-questions.md +++ b/context/open-questions.md @@ -88,6 +88,16 @@ 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. - **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