KB: link the four deferred defects to their new Gitea reports (#62 AutoConnect / #63 PlayerStatus databinding / #64 damageZone shadow / #65 HandleMessage non-virtual)
Findings from the #46/#47/#48 work were living only in context/open-questions.md. Each is a real defect with player-visible or latent-crash impact, so each now has a tracker item with evidence + fix design; the KB entries point at them by number so the two stay in sync.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user