diff --git a/context/open-questions.md b/context/open-questions.md index 970949b..957f899 100644 --- a/context/open-questions.md +++ b/context/open-questions.md @@ -228,7 +228,8 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR Remaining risks: the wooHoo latch fields are still untested; FindLamp needs exact modeMask equality so unflashed lamps on rare pages would betray a mapping-stream mask mismatch. - **DEFERRED de-shadow: `MechSubsystem::damageZone` re-declares the PUBLIC engine - `Subsystem::damageZone` (SUBSYSTM.h:159) — gotcha #1 (2026-07-25, found via #47).** All recon + `Subsystem::damageZone` (SUBSYSTM.h:159) — gotcha #1, FILED AS GITEA #64 + (2026-07-25, found via #47).** All recon code coherently uses the derived member; the ENGINE base member stays NULL forever, and engine base paths that use it (`Subsystem::TakeDamage` derefs it unguarded!) would AV if ever reached. mechtech's monitor filter hit this (naive `sub->damageZone` resolved to the engine one → 0 @@ -247,14 +248,15 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR lamps for the aux/eng bezel buttons (LAMP.cpp/L4LAMP.cpp are T0-compiled; the glass panels + pod RIO both consume `RIO::SetLamp`, so the flash lands on-screen AND on the pod). Decode the type-31 stream format first — it names which conditions flash which lamps. -- **PlayerStatus (the mission-review panels) reads the compiled player at RAW BINARY OFFSETS - (2026-07-25, found via #48) [T1 code-read].** btl4gau3.cpp `PlayerStatus::Execute`: +- **PlayerStatus (the mission-review panels) reads the compiled player at RAW BINARY OFFSETS -- + FILED AS GITEA #63 (2026-07-25, found via #48) [T1 code-read].** btl4gau3.cpp `PlayerStatus::Execute`: `player+0x1FC` (vehicle), `+0x1C8` (score, drawn as a numeric), `+0x1C4` (alive/dead -- a state flip draws a 160x240 filled box) -- all 1995 offsets, garbage on our compiled layout (the databinding trap). DORMANT in-game (the review context no longer survives the viewpoint swap -- the #48 teardown fix) but LIVE the moment the mission-review screen actually runs at round end. Bridge all three through btplayer.cpp accessors before enabling the review screen. -- **`PoweredSubsystem` AutoConnect is DEAD, and vtable slot +0x40 is misattributed +- **`PoweredSubsystem` AutoConnect is DEAD, and vtable slot +0x40 is misattributed -- + FILED AS GITEA #62 (root cause of the #21 field report) (2026-07-25, found while auditing #47's GetStatusFlags change) [T1 decomp].** The binary (@004b0bd0 tail) calls slot +0x40 with TWO shapes: `(this, 0)` in the outer gate (require `== 0`) and `(this, candidateGenerator)` inside the roster walk (require `!= 0`). That is a