BT410: the MFD wave landing report (5.3.33-38)
Where the cockpit stands per head, the five defects the rig found and the order they fell, and the measurement lesson: a large overlapping error makes a small one measure as already-optimal, which is exactly what I recorded for the title banner before the strip art was fixed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -778,3 +778,85 @@ Everything in this list came from the per-head instrument in one sitting;
|
||||
none of it was visible in the whole-frame score, which moved less than a
|
||||
point across the entire session even as Eng1/2/3 went to exact. Score the
|
||||
heads, not the frame.
|
||||
|
||||
================================================================================
|
||||
5.3.33-38 -- THE MFD WAVE: the weapon panels close to a few dozen pixels
|
||||
================================================================================
|
||||
|
||||
Where the cockpit stands against the shipped 4.10 binary (planes.py):
|
||||
|
||||
head shipped ours missing extra
|
||||
Eng1 17981 17981 0 0
|
||||
Eng2 17981 17981 0 0
|
||||
Eng3 17981 17981 0 0
|
||||
Mfd1 41784 41651 140 7
|
||||
Mfd2 40799 40716 97 14
|
||||
Mfd3 32146 32128 31 13
|
||||
Heat 21374 20971 483 80
|
||||
Comm 15656 13557 2099 0
|
||||
overlay 3283 3325 55 97
|
||||
sec 35423 36137 325 1039 <- the 3-D scene (btl4vid)
|
||||
|
||||
Whole frame: 98.2% pixel-identical / 97% coverage, from 89.7% / 92% at the
|
||||
start of the session. Six of the ten heads are exact or within ~150px.
|
||||
|
||||
FIVE DEFECTS, ALL FOUND BY THE RIG, IN THE ORDER THEY FELL:
|
||||
|
||||
1. MissileLauncher::DefaultData carried Subsystem's shared-data tables where
|
||||
every sibling weapon carries MechWeapon's -- so EVERY weapon attribute on
|
||||
a launcher resolved to nothing and the gauge read the unbound zero cell.
|
||||
The tell was a fire-ready disc the shipped STREAK 6 panel draws and ours
|
||||
never did, while [proj-state] showed the launcher itself at state=Loaded
|
||||
recoil=0 level=1 bin=24. A healthy weapon behind a dead binding. ~7.6K
|
||||
pixels. This one reaches well past the cockpit: PercentDone,
|
||||
TriggerState, WeaponState, DistanceToTarget and RearFiring were all dead
|
||||
on both SRM6 launchers.
|
||||
|
||||
2. The strip art (image_names[auxScreenPlacement], qblh0..qblh6 -- the mech
|
||||
diagram with this subsystem's segment lit) drew at the panel ORIGIN
|
||||
instead of the quadrant's middle. Solved rather than guessed: our extra
|
||||
pixels clustered at panel x 0..70 against shipped's missing at x 140..230,
|
||||
and a cross-correlation of the two sets peaked at dx=+144 dy=-54
|
||||
independently on all three panels. +144 is 0x90 exactly. ~10.9K missing
|
||||
and ~6.7K extra pixels.
|
||||
|
||||
3. The ammo readout was inert (ammoBinLink protected, no accessor).
|
||||
ProjectileWeapon now publishes GetAmmoCount() and the cluster copies it
|
||||
into a live cell each Execute -- the pattern it already used for jammed
|
||||
and reloadSeconds. The STREAK 6 panel reads 0024 against shipped's 0024.
|
||||
|
||||
4. CoolingLoopConnection::Update wrote a constant 0, so every panel's state
|
||||
box read "OFF" where shipped shows the loop digit. heat.hpp now publishes
|
||||
GetCoolantAvailable() / ResolveCoolingMaster() / GetCondenserNumber() and
|
||||
the connection follows the binary. The box reads 4 / A against shipped's
|
||||
4 / A, pixel for pixel.
|
||||
|
||||
5. SegmentArc270 computed segmentSpan = 0.75 in its ctor and NOTHING read it
|
||||
-- the engine base has no span member and the class declared no Execute,
|
||||
so the dial lit all 20 segments where shipped lights 15. A derived
|
||||
Execute now scales the fraction, draws, and restores it (the connection
|
||||
only rewrites currentValue on change, so scaling in place would compound
|
||||
and walk the dial to zero). Extra: 679/462/461 -> 7/14/13.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
THE MEASUREMENT LESSON, WHICH IS THE REUSABLE PART
|
||||
--------------------------------------------------------------------------------
|
||||
Mid-session I measured the title banner at y+0xb3 as the OPTIMUM and wrote in
|
||||
this file that it was at most 1-2px off: +3 and -3 both scored worse, and the
|
||||
correlation peaked at only 30%. That reading was CONFOUNDED. The strip-art
|
||||
error (defect 2) was ten times larger and lived in the same bands, so it
|
||||
dominated the metric and hid a clean one-row error underneath. Once the
|
||||
strip art was right, the title fringe isolated at exactly 553/553
|
||||
missing/extra per head and +1 collapsed it to nothing.
|
||||
|
||||
So: fix the LARGEST error on a head first, then re-measure the small ones. A
|
||||
big overlapping defect makes a small one measure as noise -- or worse, as
|
||||
already-optimal, which is what I recorded.
|
||||
|
||||
WHAT IS LEFT, LARGEST FIRST:
|
||||
* sec (325 missing / 1039 extra) -- the 3-D scene head. This is btl4vid,
|
||||
the world renderer, and the next big climb; the gauge work cannot move it.
|
||||
* Comm (2099 missing / 0 extra) -- content the shipped Comm page draws that
|
||||
we never build at all. Zero extra means nothing we draw there is wrong,
|
||||
so this is a build-it wave, not a fix-it one.
|
||||
* Heat (483 / 80) and the MFD remainders (~270 / ~34) -- fine detail.
|
||||
|
||||
Reference in New Issue
Block a user