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:
co-authored by
Claude Opus 4.8
parent
674c172cf8
commit
a02339112a
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user