docs: record the map (radar) gauge as done + its follow-ups
GAUGE_COMPOSITE.md + CLAUDE.md: add the map/MapDisplay radar (increment 6, the view wedge renders) to the done list; note the systemic pattern (a newly-consumed reconstructed gauge is the first reader of stubbed helpers -- the map exposed 3); narrow the remaining gauge widgets to PlayerStatus + vehicleSubSystems, and list the map follow-ups (contact classification / stubbed pip+name infra, SetTargetRange zoom). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
48ed3a8b73
commit
1746c5bb1f
+21
-7
@@ -406,6 +406,21 @@ fill the gaps (bind not-yet-needed ids to a shared read-only pad member).
|
||||
frame index; added the missing `OneOfSeveral::foregroundColor`@0x9C. Config binds duck/searchlight/
|
||||
display-mode/piloting-mode buttons; `ControlsMapper/DisplayMode` resolves live, the rest degrade to
|
||||
frame 0 until their tables land.
|
||||
6. **map** (MapDisplay, btl4rdr) — the RADAR / tactical display (the marquee). The renderer was already
|
||||
reconstructed (Execute phases: bounds → gather static/moving entities → DrawViewWedge/DrawStatic/
|
||||
DrawMoving/DrawNames); only the registration glue + data were missing. Extended the Mech table to the
|
||||
full 0x15..0x38 (RadarRange/RadarLinearPosition[Point3D*]/RadarAngularPosition[Quaternion*]/DuckState;
|
||||
`AttributePointer`=`int Simulation::*` so the ATTRIBUTE_ENTRY reinterpret binds pointer members),
|
||||
published the Sensor("Avionics") RadarPercent table, and reconstructed `MapDisplay::methodDescription`+
|
||||
`Make` from the config (the "center"/"bottom" enum keyword typed as a STRING + converted in Make → no
|
||||
ModeManager named-constant needed). Renders the view wedge (mech FOV cone) live. THREE pre-existing
|
||||
stubs the map was the first consumer of, each fixed: Sensor `radarPercent` went negative (un-normalized
|
||||
`heatEnergy` in the not-byte-exact heat-leaf → guarded to no-penalty); `ResolveOperatorEntity` returned
|
||||
NULL (→ viewpoint fallback); `MapName::ExtractFromEntity` didn't NULL-guard the entity. ⚠ Debug via
|
||||
`BT_MAP_LOG` (phase/draw trace). FOLLOW-UPS: contacts show 0 (the `GetStaticEntitiesWithinBounds`/
|
||||
`GetMovingEntitiesWithinBounds` classification finds nothing — the enemy dummy isn't in the spatial
|
||||
lists); the pip/name/video-object infrastructure (`GetVideoObject`/`LookUpPip`/`GetNameID`) is stubbed
|
||||
so contacts/labels need it; radarRange is a 500m default until `SetTargetRange` is un-stubbed.
|
||||
|
||||
### Reconstruction-technique additions (durable)
|
||||
- **x87 float math Ghidra drops** (`FUN_004dcd94()`/`FUN_004dcd00()` show no args = FPU-stack operands):
|
||||
@@ -425,10 +440,9 @@ fill the gaps (bind not-yet-needed ids to a shared read-only pad member).
|
||||
- Reservoir shadow: `Reservoir::coolantCapacity`@0x128 shadows the inherited `thermalCapacity` the gauge
|
||||
reads → `Reservoir/CoolantCapacity` reads the base default; fix = delete the shadow + write thermalCapacity
|
||||
in the Reservoir ctor (bundle with the Reservoir coolant-bar verification).
|
||||
- ✅ **oneOfSeveralPixInt** DONE (increment 5 above). To make its `DuckState`/`Searchlight/LightOn`
|
||||
buttons DYNAMIC (they read frame 0 today): extend the Mech dense table to 0x37 (DuckState@0x3f8) + add a
|
||||
Searchlight `LightOn` table.
|
||||
- Remaining widgets (task #13): `map` (radar — the marquee; needs the Mech dense table extended to 0x31 for
|
||||
RadarRange/RadarLinearPosition/RadarAngularPosition + a Sensor `RadarPercent` table + the map/radar
|
||||
renderer reconstruction, base `MapDisplay` in btl4rdr.cpp), `PlayerStatus` (comm/score, 8 uses),
|
||||
`vehicleSubSystems` (26 uses).
|
||||
- ✅ **oneOfSeveralPixInt** DONE (increment 5). The Mech table now reaches 0x37 so `DuckState` resolves;
|
||||
`Searchlight/LightOn` still needs a Searchlight `LightOn` table to make that button dynamic.
|
||||
- ✅ **map** DONE (increment 6) — renders the view wedge. FOLLOW-UPS: the spatial-query contact
|
||||
classification (0 contacts today) + the stubbed pip/name/video-object infrastructure (contacts + labels)
|
||||
+ `SetTargetRange` (radar zoom, currently a 500m default).
|
||||
- Remaining widgets (task #13): `PlayerStatus` (comm/score, 8 uses), `vehicleSubSystems` (26 uses).
|
||||
|
||||
Reference in New Issue
Block a user