vehicleSubSystems: verify Phase 1 end-to-end + confirm the Phase-2 blocker

Add a BT_VSS_LOG diagnostic (Make entry + per-subsystem classID/auxScreen dump +
the ConfigureForModel path).  Verified under BT_DEV_GAUGES: the gauge renderer
builds, ConfigureForModel(Init) runs bhk1Init, and VehicleSubSystems::Make is
called with the full 33-subsystem roster -- the dispatcher iterates every
subsystem and its classID switch resolves the displayable types (0xBC3 Sensor,
0xBC6 Myomers, 0xBC8/0xBD4 Emitter/PPC, 0xBCD/0xBD0 Proj/Missile).

CONFIRMED (empirically) the Phase-2 blocker: subsystem[0x1dc] (the aux-screen
position the Make gates on) reads 0xCDCDCDCD (uninitialized) / garbage for the
displayable subsystems -> every panel hits the "Illegal aux screen position"
skip, so nothing renders yet.  Phase 2 = populate the aux-screen field from the
subsystem resource.  Combat remains un-regressed (the skip path is inert).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-07 06:54:44 -05:00
co-authored by Claude Opus 4.8
parent 674c172cf8
commit a02339112a
2 changed files with 8 additions and 0 deletions
+3
View File
@@ -645,6 +645,9 @@ BTL4Application::SharedData
BTL4GaugeRenderer
*gauge_renderer = (BTL4GaugeRenderer*)GetGaugeRenderer(); // *(this+0x4c)
if (getenv("BT_VSS_LOG"))
DEBUG_STREAM << "[vss] MakeViewpointEntity: gaugeRenderer="
<< (int)(gauge_renderer != NULL) << " -> ConfigureForModel(Init)\n" << std::flush;
if (gauge_renderer != NULL)
{
gauge_renderer->ConfigureForModel("Init", viewing_entity); // FUN_0046ff64
+5
View File
@@ -1371,6 +1371,8 @@ Logical
imageNames[p] = methodDescription.parameterList[p].data.string;
int count = entity->GetSubsystemCount(); // entity+0x124
if (getenv("BT_VSS_LOG"))
DEBUG_STREAM << "[vss] Make called: subsystemCount=" << count << "\n" << std::flush;
for (int i = 0; i < count; i++)
{
if (i == 0) // slot 0 = the controls mapper
@@ -1382,6 +1384,9 @@ Logical
continue;
int group = *(int *)((char *)sub + 0x1dc) - 1; // aux-screen position 1..12
if (getenv("BT_VSS_LOG"))
DEBUG_STREAM << "[vss] i=" << i << " classID=" << (int)sub->GetClassID()
<< " auxScreen[0x1dc]=" << (group + 1) << "\n" << std::flush;
if (group < 0)
{
DebugStream << "Auxiliary screen position = zero\n";