MP: the Mech-level update records @0x4a0c2c/@0x4a1232 -- all 9 types byte-exact (task #1)
- Writer transcribed from the recovered disasm; reader rewritten from part_012.c with every Wword absorber promoted to named engine/port members (updateOrigin/updateVelocity/projectedOrigin/projectedVelocity/nextUpdate/ lastUpdate + bodyTargetSpeed/latches/alarms). Wire sizes verified live: 0x14/0x20/0x2c/0x78. - movementMode UNIFIED with Simulation::simulationState (binary mech+0x40 = StateIndicator@0x2c currentState) -- death/limbo/airborne now replicate in every record header. Three mislabels of the same binary fns retired: SetInstanceFlags + RequestActionFlags -> Mech::ForceUpdate (updateModel |= mask, 0xfe03 disabled filter); IsNetworkCopy -> IsDisabled. - Senders wired byte-exact: gait transitions Force(8), knockdown Force(1|0x20), death Force(1|0x40), Reset Force(0x1f) + binary zero-set, perf-loop deadbands (speed type 2, orientation type 4, heat type 7). - 2-node verified: types 2/3/4 flow while driving; kill -> type-6 record (simState=9) -> the OBSERVER's replicant runs the wreck sink loop with no double death transition; respawn 0x1f burst snaps + un-wrecks the peer; walking replicant un-regressed (run 12, cycle tracking); solo clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
3c34ae6de6
commit
c9f0c2a7f1
@@ -1233,3 +1233,19 @@ void *BTResolveRosterPilot(int slot)
|
||||
}
|
||||
return (void *)mapper->GetPilot(slot); // FUN_004b0898
|
||||
}
|
||||
|
||||
//###########################################################################
|
||||
// BTMapperSpeedDemand -- complete-type bridge (task #1)
|
||||
//
|
||||
// Mech::WriteUpdateRecord stamps the controls mapper's live speedDemand
|
||||
// (binary: *(subsystemArray[0] + 0x128)) into every record tail. mech.cpp
|
||||
// sees only the forward declaration of MechControlsMapper, so the read
|
||||
// lives here in the complete-type TU (the house databinding pattern).
|
||||
//
|
||||
Scalar BTMapperSpeedDemandRaw(void *mapper)
|
||||
{
|
||||
// void* signature: mech.cpp's TU carries a local recon stub type under the
|
||||
// same name, so a typed signature mangles differently there (class/struct
|
||||
// + type identity). The cast happens HERE, in the complete-type TU.
|
||||
return (mapper != 0) ? ((MechControlsMapper *)mapper)->speedDemand : Scalar(0.0f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user