diff --git a/restoration/source410/BT/MECH-LAYOUT.md b/restoration/source410/BT/MECH-LAYOUT.md index 45abf970..d71a7867 100644 --- a/restoration/source410/BT/MECH-LAYOUT.md +++ b/restoration/source410/BT/MECH-LAYOUT.md @@ -82,7 +82,7 @@ Settles the open item in the "Real 1995 types" bullet above: |---|---|---| | ReconAlarm (AlarmIndicator) | AlarmIndicator (multi-level, N levels sets size) | ❌ MISSING | | ReconSeq | SequenceController (animation sequence) | ❌ MISSING | -| ReconFiltered / FilteredScalar | AverageOf (15-sample running avg) | ❌ MISSING | +| ReconFiltered / FilteredScalar | **AverageOf** (15-sample running avg) | ✅ AVERAGE.HPP | | ReconFiltered (mechNameFilter) | NameFilter | ❌ MISSING | | ReconChain | ChainOf | ✅ CHAIN.HPP | | ReconMatrix / Matrix34 | AffineMatrix / Matrix | ✅ | @@ -90,11 +90,14 @@ Settles the open item in the "Real 1995 types" bullet above: | Reticle | Reticle | ✅ RETICLE.HPP | | BTVal (turretBase, mechName, torsoAim*, aimRate, headPitch, torsoTwist) | animated value/quaternion — **UNIDENTIFIED**; BT411 BTVal is a no-op placeholder. Most BTVal members are < 0x328 = BASE-class pose fields (re-attribute per §"Consequences"), so their type is a base concern, not Mech's. | -### CRITICAL new finding — embedded helper classes are ALSO missing +### CRITICAL new finding — 3 embedded helper classes are missing -`AlarmIndicator`, `SequenceController`, `NameFilter`, `AverageOf` do **not** exist anywhere in -the 4.10 CODE archive (confirmed by full-tree grep). They are additional helper classes the -milestone must reconstruct, and their sizes set the embedded-member offsets — so the +`AlarmIndicator`, `SequenceController`, `NameFilter` do **not** exist anywhere in the 4.10 +CODE archive (confirmed by full-tree grep; no *alarm*/*filter*/*sequen* headers either). +They are additional helper classes the milestone must reconstruct from BT411's decomp, and +their sizes set the embedded-member offsets. (`AverageOf` was initially flagged missing but +DOES survive — AVERAGE.HPP, same SIGNATURED lineage BT411 preserved — so telemetryFilter[5]'s +type is available.) The alarm sizing: the `masterAlarm@0x39C`/`heatAlarm@0x450`/`stabilityAlarm@0x4C4`/`statusAlarm@0x714` spacing DERIVES the AlarmIndicator per-level size (e.g. masterAlarm 33 levels spans 0x39C..0x450 = 0xB4; heatAlarm 3 levels spans 0x450..0x4C4 = 0x74 — a fixed header + N-level array; solve @@ -112,8 +115,8 @@ legAnimation/bodyAnimation spacing. ### Revised reconstruction order -1. **Helper classes** (block the layout): AlarmIndicator, SequenceController, NameFilter, - AverageOf — sizes solved from the offset-spacing equations above; identify BTVal. +1. **Helper classes** (block the layout): AlarmIndicator, SequenceController, NameFilter + (AverageOf survives) — from BT411 decomp; identify BTVal (mostly base-class pose fields). 2. **MechSubsystem base + roster** (GAUSS/PPC/SENSOR + .TCP partials + decomp). 3. **Finalize MECH.HPP** per the offset map; probe sizeof(Mech)==0x854. 4. **Mech ctor** (@004a1674): embedded construction + segment-table walk.