BT410 notes: the mech tail chain triple pinned -- +0x7ac Myomers / +0x7bc weapons / +0x7cc heatables; BalanceCoolant unblocked
Derivation GUIDs from the ctor's chain sweeps resolved by static-layout adjacency: the mobility scale is max MYOMERS effectiveness; the coolant share (+0x15c) each heatable stores is the weight the reservoir draw (@004aefa4) applies per item. BalanceCoolant lands next sitting on the heatableSubsystems chain with three new members. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -282,38 +282,49 @@ advance dispatch death-guarded. SIDE EFFECT: `Mech::InDeathTransition`
|
||||
and the camera director's cut-away are now LIVE (mode 9 is finally
|
||||
written on kills) -- the director path needs a rig eyeball when a pod is
|
||||
back.
|
||||
|
||||
## 5.3.122 -- the message roster fills (three of the six landed)
|
||||
|
||||
Landed: **RealMaxSpeed** (@0049f604: adopt streamed +0x7a0 while +0x7a4
|
||||
clear; wire payload at +0x1c, sender EntityID stamped at +0xc by Entity's
|
||||
network send @0041f640 = {stamp id, msg+0x14 <- entity+0x194, EntityManager
|
||||
(app+0x30) send @00434ea0}), **SetBurningState** (@0049f674: park the wreck
|
||||
at (localHostID x 10000, localHostID x -1000) -- constants @0049f6fc/f8,
|
||||
host id = HostManager::GetLocalHostID, THE accessor the instance dispatch
|
||||
compares against ownerID -- then MODE 2 = BURNING, the second
|
||||
InDeathTransition state's missing writer, + ForceUpdate(1) +
|
||||
AlwaysExecute), **ClearBurningState** (@0049f700: mode 0 + same pair).
|
||||
simulationFlags bit 1 == DontExecuteFlag (SIMULATE.HPP) -- the binary's
|
||||
`&= ~2` IS AlwaysExecute().
|
||||
|
||||
Still to land from the roster:
|
||||
|
||||
* **BalanceCoolant @0049f728** (decoded): if payload > 0, mark item+0x1d0=1
|
||||
across the mech+0x7cc roster, then the redistribute pass @0049f788: total
|
||||
the marks, per item fraction = mark/total (0.0 @0049f850 when empty),
|
||||
blip the item's alarm at +0x1dc (level 2 if fraction <= stored else 1,
|
||||
then 0 -- the gauge flash), store fraction at item+0x15c. BLOCKED ON:
|
||||
identifying the mech tail chain triple +0x7ac (legs -- the mobility
|
||||
scan) / +0x7bc / +0x7cc (coolant holders) against our capability chains
|
||||
-- @004aefa4 walks all three plus the plug at +0x590 to collect the
|
||||
coolant set, so decode that fn to pin them.
|
||||
* **EjectPilot @0049f854** (head read): gated on payload > 0 AND
|
||||
**mech+0x414** -- THE EFFECTIVENESS-CENSUS CONSUMER FOUND: you can only
|
||||
eject a CRIPPLED mech (@0049fa1c's weapons/coolant/generator/limp
|
||||
census) -- and !InDeathTransition; notifies via an app+0x2c accessor
|
||||
(@00429078) + app+0x20 vcall (score/event, code 5, ownerID +0x18c);
|
||||
sets **MODE 10 = EJECTED** (which is WHY IsMechDestroyed tests >= 9:
|
||||
9 killed, 10 ejected); then builds a large effect/explosion struct --
|
||||
tail still unread. Mode roster now: 0 default, 2 burning, 3/4 gimp
|
||||
L/R, 5-8 falls, 9 killed, 10 ejected; writers of 5-8 still open.
|
||||
|
||||
## 5.3.122 -- the message roster fills (three of the six landed)
|
||||
|
||||
Landed: **RealMaxSpeed** (@0049f604: adopt streamed +0x7a0 while +0x7a4
|
||||
clear; wire payload at +0x1c, sender EntityID stamped at +0xc by Entity's
|
||||
network send @0041f640 = {stamp id, msg+0x14 <- entity+0x194, EntityManager
|
||||
(app+0x30) send @00434ea0}), **SetBurningState** (@0049f674: park the wreck
|
||||
at (localHostID x 10000, localHostID x -1000) -- constants @0049f6fc/f8,
|
||||
host id = HostManager::GetLocalHostID, THE accessor the instance dispatch
|
||||
compares against ownerID -- then MODE 2 = BURNING, the second
|
||||
InDeathTransition state's missing writer, + ForceUpdate(1) +
|
||||
AlwaysExecute), **ClearBurningState** (@0049f700: mode 0 + same pair).
|
||||
simulationFlags bit 1 == DontExecuteFlag (SIMULATE.HPP) -- the binary's
|
||||
`&= ~2` IS AlwaysExecute().
|
||||
|
||||
Still to land from the roster:
|
||||
|
||||
* **BalanceCoolant @0049f728** (decoded): if payload > 0, mark item+0x1d0=1
|
||||
across the mech+0x7cc roster, then the redistribute pass @0049f788: total
|
||||
the marks, per item fraction = mark/total (0.0 @0049f850 when empty),
|
||||
blip the item's alarm at +0x1dc (level 2 if fraction <= stored else 1,
|
||||
then 0 -- the gauge flash), store fraction at item+0x15c. UNBLOCKED (same sitting): the ctor's chain sweeps
|
||||
(part_012.c:15760..) pin the triple by derivation GUID, names resolved
|
||||
by static-layout adjacency to each TU's string pool: **+0x7ac =
|
||||
MYOMERS** (GUID 0x51155c, string @0x51166d -- so the mobility scale IS
|
||||
max leg-muscle effectiveness, item+0x31c), **+0x7bc = MECHWEAPON
|
||||
roster** (0x511830; the ctor ORs weapon+0x334 mappable-button masks
|
||||
into mech+0x410 as it fills it), **+0x7cc = HEATABLE SUBSYSTEMS**
|
||||
(0x50e4fc == our heatableSubsystems chain; 0x50e604 = the HeatSink-side
|
||||
derivation whose members get a post-ctor vcall+0x38 -- the conduction
|
||||
link resolve). BalanceCoolant therefore marks EVERY heatable (+0x1d0),
|
||||
and the stored fraction +0x15c is the item's coolant ALLOCATION SHARE:
|
||||
the reservoir draw @004aefa4 weights each item's draw by it
|
||||
(rate = -(reservoir+0x224) x share x dt, clamped, with mass/capacity
|
||||
bookkeeping at item+0x12c/+0x128). Land as: three HeatableSubsystem
|
||||
members (balanceMark/coolantShare/balanceAlarm, +0x1d0/+0x15c/+0x1dc)
|
||||
+ the handler on heatableSubsystems.
|
||||
* **EjectPilot @0049f854** (head read): gated on payload > 0 AND
|
||||
**mech+0x414** -- THE EFFECTIVENESS-CENSUS CONSUMER FOUND: you can only
|
||||
eject a CRIPPLED mech (@0049fa1c's weapons/coolant/generator/limp
|
||||
census) -- and !InDeathTransition; notifies via an app+0x2c accessor
|
||||
(@00429078) + app+0x20 vcall (score/event, code 5, ownerID +0x18c);
|
||||
sets **MODE 10 = EJECTED** (which is WHY IsMechDestroyed tests >= 9:
|
||||
9 killed, 10 ejected); then builds a large effect/explosion struct --
|
||||
tail still unread. Mode roster now: 0 default, 2 burning, 3/4 gimp
|
||||
L/R, 5-8 falls, 9 killed, 10 ejected; writers of 5-8 still open.
|
||||
|
||||
Reference in New Issue
Block a user