RETRACTION + FIX: the myomer seek->speed coupling IS in the 4.10 binary --
restored byte-grounded; the morning's removal was export-gap blindness Player testimony (Oracle, pod veteran: seek-4 humanoid = 182 kph -- the manual's printed Super Charged figure; overheat = 'freezing up') forced a re-audit of the morning's 'no dynamic myomer->speed feed' verdict. The verdict was WRONG: a raw-image capstone sweep for FPU reads of [reg+0x31C] found the consumer inside the UN-EXPORTED master-perf region -- the same decomp gap that hid the #93 crash block. Decoded @0x4a9cf2-0x4a9da4 [T1]: per frame: MAX speedEffect@0x31C over the myomer chain (+0x7AC) -> mech+0x79C mapper->speedDemand@0x128 *= it (the SPEED coupling) if |drive| <= 1e-4 (@0x4ab16c): mapper->turnDemand@0x12C = 0 (the FREEZE) Everything the manual + the veterans describe emerges: gear 4 rides speedEffect ~1.43 into the RegisterMaxOutput gait cap (base x 1.4284 -- the two mechanisms interlock: 61.5 x 1.43 = 87.9 vs cap 87.8 measured) = SUPERCHARGE; myomer heatFactor degradation slows you; overheat freezes speed AND turn; damage slows (speedEffect carries 1-damage -- #75's original premise was RIGHT and its 'falsified' close was wrong). Restored in mechmppr.cpp, byte-grounded and better than the pre-removal draft: MAX over the chain (was first-found), NO 1.0 clamp (the old clamp ate the overdrive), turn-freeze included. BTMyomersSpeedEffectOf (unclamped) replaces the deleted BTMyomersDriveOf. Verified live: healthy drive=1.0 (no speed change), collision-rattled myomers drive 0.999 -> 0.892 -> 0.742 with demand scaling in lockstep (61.5 -> 54.9 -> 45.7). KB corrected in place (subsystems WAVE 6, pod-hardware manual audit retraction, open-questions resolved) + NEW GOTCHA #21: export-gap blindness -- 'no callers in the decomp' is not 'no callers in the binary'; sweep the raw image for the operand pattern before declaring a data path dead, and when a primary source disagrees with your decomp sweep, suspect your evidence first. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Zh7PTkFy4KwTzVighLR9J
This commit is contained in:
co-authored by
Claude Fable 5
parent
4704ab3d41
commit
905a4a86c0
@@ -969,19 +969,49 @@ void
|
||||
speedDemand = -mech->reverseStrideLength * throttlePosition;
|
||||
}
|
||||
|
||||
// (The myomer `speedDemand *= speedEffect` DRIVE SCALE is GONE -- myomer-
|
||||
// system completion, 2026-07-31. It was an invention built on the
|
||||
// ConnectToMover misattribution: the binary has NO dynamic myomer->speed
|
||||
// coupling. AvailableOutput's only callers are RegisterMaxOutput (the
|
||||
// assembly-time gait cap, now live via MyomersSimulation) and the ENG-page
|
||||
// graph sampler; damaged-but-alive myomers heat faster and drop the power
|
||||
// curve but do NOT slow the mech, and DESTROYED myomers KILL it (the
|
||||
// authored vital flag + the #80 vital-crit death). GIMP slowdown: the
|
||||
// binary's real mechanism is the gimp gait machines -- the LIVE demand is
|
||||
// clamped to the wg clip's speed and the limp cadence enforces it;
|
||||
// BT_GIMP_SPEED remains as an optional override multiplier (unset = 1.0 =
|
||||
// authentic).)
|
||||
// (History note: this block was briefly REMOVED on the morning of
|
||||
// 2026-07-31 on the claim "the binary has NO dynamic myomer->speed
|
||||
// coupling" -- an export-gap-blind conclusion, retracted the same day
|
||||
// when the pod veterans testified seek 4 = 182 kph and the raw-image
|
||||
// float-read sweep found the consumer inside the un-exported master-perf
|
||||
// region. The restored form below is now BYTE-GROUNDED, and better than
|
||||
// the pre-removal draft: MAX over the myomer chain (not first-found), NO
|
||||
// 1.0 clamp (overdrive is real), and the turn-freeze at dead drive.)
|
||||
{
|
||||
// THE MYOMER DRIVE SCALE -- RESTORED + BYTE-GROUNDED (2026-07-31, the
|
||||
// seek-audit correction). The morning's removal ("the binary has NO
|
||||
// dynamic myomer->speed coupling") was EXPORT-GAP BLINDNESS: the
|
||||
// master perf's un-exported region (@0x4a9cf2-0x4a9da4, raw capstone
|
||||
// -- the same gap that hid the #93 crash block) walks the mech's
|
||||
// MYOMER capability chain (+0x7AC) every frame, keeps the MAX
|
||||
// speedEffect@0x31C in mech+0x79C, and MULTIPLIES the mapper's
|
||||
// speedDemand@0x128 by it in place; when |max| <= 1e-4 (@0x4ab16c)
|
||||
// it ALSO zeroes the mapper's turnDemand@0x12C -- dead/overheated
|
||||
// myomers freeze BOTH speed and turn ("less than a minute at seek 4
|
||||
// before overheating and freezing up" -- Oracle, who put pod seek-4
|
||||
// humanoids at 182 kph: the manual's printed Super Charged figure).
|
||||
// speedEffect = (gear/recGear) x heatFactor x (1 - damage), NO 1.0
|
||||
// clamp: gear 4 rides ~1.43x demand into the RegisterMaxOutput gait
|
||||
// cap (base x 1.4284) = SUPERCHARGE. [T1 disasm]
|
||||
Scalar drive = 0.0f; // mech+0x79C accumulator
|
||||
int myomers = 0;
|
||||
extern Scalar BTMyomersSpeedEffectOf(void *subsystem); // myomers.cpp (-1 = not a Myomers)
|
||||
int n = mech->GetSubsystemCount(); // chain-walk emulation (the
|
||||
for (int i = 2; i < n; ++i) // +0x7AC fill is the SubProxy stub)
|
||||
{
|
||||
Scalar f = BTMyomersSpeedEffectOf(mech->GetSubsystem(i));
|
||||
if (f >= -0.5f) // a Myomers (value may be 0)
|
||||
{
|
||||
++myomers;
|
||||
if (f > drive) drive = f; // MAX over the chain (@0x4a9d20)
|
||||
}
|
||||
}
|
||||
if (myomers > 0)
|
||||
{
|
||||
speedDemand *= drive; // @0x4a9d63: in-place demand scale
|
||||
if (fabsf(drive) <= 1.0e-4f) // @0x4a9d89 vs _DAT_004ab16c
|
||||
turnDemand = 0.0f; // @0x4a9d9e: mapper+0x12C -- the FREEZE
|
||||
}
|
||||
extern int BTMechGimpLevel(void *mech_v); // mechdmg.cpp (the TU-safe read)
|
||||
int mm = BTMechGimpLevel(mech); // the gimp cell (see above)
|
||||
if (mm == 3 || mm == 4)
|
||||
@@ -1001,7 +1031,8 @@ void
|
||||
if (s_dAcc >= 1.0f)
|
||||
{
|
||||
s_dAcc = 0.0f;
|
||||
DEBUG_STREAM << "[drive] mm=" << mm << " dmd=" << speedDemand
|
||||
DEBUG_STREAM << "[drive] drive=" << drive << " nMyo=" << myomers
|
||||
<< " mm=" << mm << " dmd=" << speedDemand
|
||||
<< " mech=" << (int)mech->GetEntityID()
|
||||
<< " @" << (void *)mech << "\n" << std::flush;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user