KB: record the CoolingLoopConnection databinding-trap AV fix (gauges-hud)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -63,6 +63,17 @@ TestInstance/BecameActive/Execute. **Gotchas that bite EVERY widget:**
|
||||
- **Condenser valve gauge:** ValveSetting→coolantFlowScale reads the authentic **1/N**
|
||||
(`RecomputeCondenserValves`, FUN_0049f788, was a no-op stub). [T2]
|
||||
|
||||
## CoolingLoopConnection AV — FIXED 2026-07-14 [T3]
|
||||
`CoolingLoopConnection::Update` (btl4gau2.cpp) walked the binary's plug→link→subsystem chain via
|
||||
raw `+8` offsets; our reconstructed subsystem layout isn't byte-identical, so an intermediate
|
||||
`link` came out non-null-but-garbage and `*(link+8)` AV'd — **the moment a mech's coolant loop
|
||||
goes active** (`source+0x134==1`), so it crashed the **real pod path too**, not just
|
||||
`BT_DEV_GAUGES` (the gauge background task runs `Update` whenever gauges are active). Pre-existing
|
||||
(byte-identical across the 2026-07-14 BT411 merge). Fix: `BTPtrReadable` (VirtualQuery) guards
|
||||
each raw deref → an invalid chain resolves to the authentic "no source" branch (0). Classic
|
||||
[[reconstruction-gotchas]] databinding trap; the proper follow-up is named Plug/Link accessors in
|
||||
a complete-type TU instead of raw offsets. With the guard, the full cockpit MFD suite renders.
|
||||
|
||||
## Dev composite (off-pod)
|
||||
`BT_DEV_GAUGES` renders the 6 pod [[MFD]] surfaces in a separate 960×384 window (bit-plane masks
|
||||
over one shared `SVGA16` pixelBuffer; `SVGA16::DrawDevSurface`). On the POD they come from
|
||||
|
||||
Reference in New Issue
Block a user