Spec cross-check vs the 1995 manual: reads CORRECT, numbers are 4.0-vs-4.10 drift
Audited our live streamed subsystem config against the manual's per-mech stat sheets (new BT_SPEC_LOG dump: torso speed/limits, heat-sink count, reservoir capacity, at subsystem ctor). RESULT: structure + semantics align perfectly; the tuning NUMBERS differ -- because the manual is Tesla 4.0 and our content is release 4.10. Point-release balance drift, NOT a reconstruction bug: - Owens + Blackhawk are the two fixed-torso mechs in BOTH (speed 0, limit ~0, torsoHorizontalEnabled=0); the other four twist-enabled -- our reads correctly identify every case - torso speed/limit + heat-sink count exist per-mech exactly as the manual documents; only the values were retuned 4.0->4.10 (e.g. torso speed MadCat 80->50, heat sinks Loki 38->15) - reservoir coolantCapacity reads a flat 20 = the coolant THERMAL capacity (game units), NOT the manual's per-mech 'liters' (a display/flavor quantity with no single subsystem field) -- different measures, not a bug CONCLUSION: do NOT retune content to the manual -- BTL4.RES is the authentic 4.10 shipping data; the 4.0 manual's numbers are an earlier pass. The manual CONFIRMS our structural fidelity. BT_SPEC_LOG retained for re-auditing. Follow-up (structural, less drift-prone): the per-mech coolant-loop weapon/generator assignments. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
cb82d8c1d0
commit
f4cf1e631a
@@ -546,6 +546,14 @@ Reservoir::Reservoir(
|
||||
// *this = &PTR_LAB_0050ecd4;
|
||||
squirtEfficiency = 0.5f; // this[0x8b] @0x22C
|
||||
thermalCapacity = subsystem_resource->coolantCapacity; // this[0x4a] @0x128 (coolantCapacity reuses thermalCapacity)
|
||||
|
||||
// SPEC AUDIT (BT_SPEC_LOG): streamed CoolantCapacity vs the manual's
|
||||
// "Reservoir Size (Liters)".
|
||||
if (getenv("BT_SPEC_LOG"))
|
||||
{
|
||||
DEBUG_STREAM << "[spec] reservoir: coolantCapacity="
|
||||
<< subsystem_resource->coolantCapacity << "\n" << std::flush;
|
||||
}
|
||||
coolantSquirtMass = subsystem_resource->coolantSquirtMass; // this[0x89] @0x224 = res +0x100
|
||||
coolantLevel = thermalCapacity; // this[0x4b] @0x12C
|
||||
coolantFlowScale = 0.0f; // this[0x57] @0x15C (== "word57")
|
||||
@@ -823,6 +831,14 @@ AggregateHeatSink::AggregateHeatSink(
|
||||
heatSinkCount = subsystem_resource->heatSinkCount; // this[0x74] @0x1D0 = res +0xFC
|
||||
ambientTemperature = 300.0f; // this[0x75] @0x1D4 (_DAT_004ae89c)
|
||||
|
||||
// SPEC AUDIT (BT_SPEC_LOG): the streamed HeatSinkCount vs the manual's
|
||||
// "Number of Heat Sinks" per-mech stat.
|
||||
if (getenv("BT_SPEC_LOG"))
|
||||
{
|
||||
DEBUG_STREAM << "[spec] heatsinks: count=" << heatSinkCount
|
||||
<< "\n" << std::flush;
|
||||
}
|
||||
|
||||
// task #9 (the ambient radiator lands): the binary ctor @4ae8d0 scales the
|
||||
// bank's conductance by 0.1 x HeatSinkCount (_DAT_004ae974 float80 = 0.1
|
||||
// byte-verified; madcat count 14 -> x1.4) and installs the RADIATOR
|
||||
|
||||
@@ -244,6 +244,24 @@ Torso::Torso(
|
||||
elevationCenter = verticalLimitTop; // @0x228 = @0x220
|
||||
elevationHalfBottom = verticalLimitBottom * 0.5f; // @0x22C (_DAT_004b6fbc)
|
||||
|
||||
// SPEC AUDIT (BT_SPEC_LOG, 2026-07-18): dump the streamed torso config so
|
||||
// it can be diffed against the 1995 manual's per-mech stat sheet
|
||||
// ("Torso speed (deg/sec)" / "Torso Limit (degrees)"). Values printed in
|
||||
// DEGREES (the manual's units); horizontalRotationPerSecond IS deg/sec in
|
||||
// the resource, the limits are stored in degrees pre-DegToRad.
|
||||
if (getenv("BT_SPEC_LOG"))
|
||||
{
|
||||
DEBUG_STREAM << "[spec] torso: speed=" << r->horizontalRotationPerSecond
|
||||
<< " deg/s limitL=" << r->horizontalLimitLeft
|
||||
<< " limitR=" << r->horizontalLimitRight
|
||||
<< " (arc=" << (r->horizontalLimitLeft - r->horizontalLimitRight)
|
||||
<< ") vRate=" << r->verticalRotationPerSecond
|
||||
<< " vTop=" << r->verticalLimitTop
|
||||
<< " vBot=" << r->verticalLimitBottom
|
||||
<< " hEnabled=" << (int)r->torsoHorizontalEnabled
|
||||
<< "\n" << std::flush;
|
||||
}
|
||||
|
||||
buttonRampActive = 0; // @0x268
|
||||
buttonRamp = 0.0f;// @0x26C
|
||||
|
||||
|
||||
Reference in New Issue
Block a user