Myomer factor: correct the false 'feeder unreconstructed' claim + wire the

crouch gate to the LIVE drive value

The myomer system was ALREADY COMPLETE (2026-07-31 seek audit): Performance
wrapper @004b8b9c, AvailableOutput @004b8ac0 (gear clamp x quadratic heat
degrade x (1 - zone damage)), and the master-perf chain walk + speedDemand
scale + turn freeze in mechmppr.cpp:990 -- the same @0x4a9cf2-0x4a9da4 bytes
the crouch dig re-decoded.  The 2026-08-05 banners calling the feeder dark
were an export-gap-blind grep (named members, not offsets).  Fixes:
mechmppr publishes the chain MAX into mech->myomerEffectiveness (the
binary's +0x79C home) so the crouch posture gate reads the live factor
(dead/overheated myomers now genuinely refuse squat/rise -- previously the
gate read a neutral 1.0 and never fired); the duplicate speedDemand multiply
in the posture block is removed (mechmppr's is the one application); banners
and locomotion.md corrected.  Squat re-benched green on the live wiring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-08-06 09:21:28 -05:00
co-authored by Claude Fable 5
parent 58c3db090b
commit e1c3f2db6a
4 changed files with 31 additions and 20 deletions
+6 -1
View File
@@ -322,7 +322,12 @@ for FREE (screenshot receipt: the crouched crimson madcat from the observer's co
duckmpA_031). Clip data verified from BTL4.RES (root joint drops -2.22, knees +-1.14; squ/sqd
are exact mirrors; interior 'squi/sqdi' variants ship for all 8 chassis). Full solo cycle
benched (BT_BTNTEST + BT_BTNTEST2): squat -> hold (joints steady for minutes) -> rise ->
standing zeros. Myomer speed-cripple feeder (@004b8be3) still deferred [T3] -- see mech4 banner.
standing zeros. Myomer factor: LIVE, not deferred -- the 2026-08-05 "feeder unreconstructed" claim was an
export-gap-blind grep (the members are NAMED: speedEffect@0x31C, myomers.cpp; the chain walk +
speedDemand scale + turn freeze = mechmppr.cpp:990, the 2026-07-31 seek audit, same bytes).
mechmppr now publishes the chain MAX into mech->myomerEffectiveness (the binary's +0x79C home)
so the crouch gate reads the live value: dead/overheated myomers (the Oracle seek-4 freeze)
refuse the squat AND the rise.
The pilot's EYE drops too -- the task-#15 bob channel (gBTEyeBobY <- jointlocal.y each frame)
carries the parked -2.22 into DPLEyeRenderable (log receipt bob=-2.2187 through the hold; frame
receipt duckcp_030 = grass-level view). A false "eye does not drop" residual was briefly filed
+7 -6
View File
@@ -1036,12 +1036,13 @@ protected:
// (0 none / 1 may-duck / 2 holding-squat), computed per
// master frame (FUN_004a9b5c @0x4a9f61-0x4aa007; the
// CROUCH reconstruction, 2026-08-05)
Scalar myomerEffectiveness; // binary @0x79c -- init 0 then MAX over the heatable
// chain's +0x31c each master frame; scales the mapper
// speedDemand (dead myomers cripple the walk) and gates
// the crouch. FEEDER (Myomers Performance @004b8be3,
// not in the export) UNRECONSTRUCTED -- the port holds
// the healthy 1.0 [T3]; see the mech4 posture block.
Scalar myomerEffectiveness; // binary @0x79c -- the master-perf myomer chain MAX
// (speedEffect@0x31C over the myomer subsystems),
// published LIVE each mapper update by mechmppr.cpp's
// drive-scale block (the 2026-07-31 seek-audit recon of
// the same @0x4a9cf2-0x4a9da4 bytes). Consumed by the
// crouch posture gate (mech4). Ctor 1.0 = pre-first-
// update default only.
Scalar gimpSpeedMax; // @0x52c
Scalar standSpeed; // @0x530
Scalar walkStrideLength; // @0x534
+13 -13
View File
@@ -4355,19 +4355,19 @@ void
// (2) the posture selector (+0x3f8), (3) the DuckRequest consumer.
//
{
// (1) myomerEffectiveness (+0x79c): the binary inits 0 then MAXes
// the heatable chain's +0x31c (healthy myomers publish ~1.0;
// weapons park transient fireImpulse there) and multiplies the
// mapper's speedDemand -- dead muscles = a crawling mech. The
// WRITER (Myomers Performance @004b8be3) is not in the export and
// stays unreconstructed, so the member holds the ctor's healthy
// 1.0 and this multiply is a live no-op until that dig lands
// (neutral-value deferral, the role=NULL pattern). [T3 feeder]
{
MechControlsMapper *postureMppr = MappingMapper();
if (postureMppr != 0)
postureMppr->speedDemand *= myomerEffectiveness;
}
// (1) myomerEffectiveness (+0x79c): LIVE. The master-perf myomer
// chain walk -- MAX speedEffect@0x31C -> speedDemand scale + the
// turn freeze -- was reconstructed 2026-07-31 (the seek audit) in
// mechmppr.cpp:990 from the SAME bytes (@0x4a9cf2-0x4a9da4), and
// the Myomers Performance/AvailableOutput (@004b8b9c/@004b8ac0:
// gear clamp x quadratic heat degrade x (1 - zone damage)) is
// complete in myomers.cpp. mechmppr publishes the chain MAX here
// (the binary's mech+0x79C store) each frame; the ctor's 1.0 only
// covers frames before the first mapper update. (A 2026-08-05
// banner called this feeder unreconstructed -- an export-gap-blind
// grep missed the named members; corrected 2026-08-06. The
// duplicate speedDemand multiply that briefly lived here is gone
// -- mechmppr's is the one authentic application.)
// (2) the posture selector (+0x3f8; feeds the map legend + the
// duck arbiter). @0x4a9f61-0x4aa007: any non-zero movementMode
+5
View File
@@ -1018,6 +1018,11 @@ void
if (myomers > 0)
{
speedDemand *= drive; // @0x4a9d63: in-place demand scale
// The binary keeps the chain MAX in mech+0x79C (@0x4a9d00-0x4a9d39)
// -- publish it so the CROUCH gate (mech4 posture block, 2026-08-06)
// reads the same live factor (dead/overheated myomers cannot squat
// or rise; the posture selector tests |factor| <= 1e-4).
mech->myomerEffectiveness = drive;
if (fabsf(drive) <= 1.0e-4f) // @0x4a9d89 vs _DAT_004ab16c
turnDemand = 0.0f; // @0x4a9d9e: mapper+0x12C -- the FREEZE
}