BT410 5.3.35: the MFD strip art belongs in the middle of the quadrant

image_names[auxScreenPlacement] (qblh0..qblh6) is the mech diagram with THIS
subsystem's segment lit, and SubsystemCluster drew it at the panel origin.
Shipped puts it in the quadrant's middle.

Solved from the framebuffer 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 of the head.  +144 is 0x90 exactly; y is bottom-up in this
space, so up the screen is +0x36.

  head   missing         extra
  Mfd1   4908 -> 1331    3960 -> 1776
  Mfd2   6870 -> 1908    5280 -> 2196
  Mfd3   3091 ->  730    2565 -> 1119

~10.9K missing and ~6.7K extra pixels recovered.  The whole cockpit is now
96.4% pixel-identical / 95% coverage against the shipped binary, from
89.7%/92% at the start of the session -- and the MFD weapon panels are
visually indistinguishable apart from the state box, which still reads OFF
where shipped shows a digit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-27 12:34:37 -05:00
co-authored by Claude Fable 5
parent 30e4b5885d
commit 287695fd3b
+11 -1
View File
@@ -1933,9 +1933,19 @@ SubsystemCluster::SubsystemCluster(
if (placement >= 0 && placement < 8 && image_names != NULL
&& image_names[placement] != NULL)
{
//
// PLACEMENT (A/B rig, 5.3.35): the strip is the mech diagram
// with THIS subsystem's segment lit, and it belongs in the
// middle of the quadrant, not at its origin. Solved from the
// shipped framebuffer: our extra pixels clustered at panel x
// 0..70 against shipped's missing at x 140..230, and the
// cross-correlation peaked at dx=+144 dy=-54 on all three
// panels independently. y is bottom-up in this space, so up
// the screen is +54.
//
background = new BackgroundBitmap(
mfd_mode, renderer_in, owner_ID, mfd_port,
x, y, image_names[placement],
x + 0x90, y + 0x36, image_names[placement],
1, // opaque
0xff, 0 // fg / bg
);