Issue #42: doubled MFD joystick -- restore the dropped MoveToAbsolute(0,0)

The binary's ConfigMapGauge dirty-redraw (@004c6f1c) is SetColor(0xFF)
-> MoveToAbsolute(0,0) -> DrawBitMapOpaque; the transcription dropped
the reposition.  The FIRST draw worked by accident (fresh view cursor
at the origin); every forced redraw -- the weapon panel's DISPLAY
round-trip (main -> ENG DATA -> main, BecameActive sets dirty) --
blitted btjoy.pcc at the state-lamp loop's leftover cursor (0xc, 0x55),
painting an offset ghost joystick over the original on every MFD.

Repro pinned live by the operator (initial draw correct; doubles on
the DISPLAY round-trip, every MFD).  LIVE-VERIFIED fixed by the
operator: round-trips redraw cleanly.  NOT a regression -- present
since the joystick went live (89b4f53; bisect-confirmed).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-24 09:25:12 -05:00
co-authored by Claude Opus 4.8
parent f7daf03507
commit a35cef4c01
+7
View File
@@ -657,6 +657,13 @@ void
if (base != NULL)
{
localView.SetColor(0xFF); // vtbl+0x18
// issue #42 (doubled joystick): the binary repositions to the view
// ORIGIN before the blit -- @004c6f1c vtbl+0x24 (0,0) between
// SetColor and DrawBitMapOpaque. The transcription had dropped it,
// so the FIRST draw worked (fresh cursor) and every forced redraw
// (the DISPLAY page round-trip's BecameActive) blitted at the state
// loop's last cursor (0xc, 0x55) -- the offset ghost joystick.
localView.MoveToAbsolute(0, 0); // vtbl+0x24
localView.DrawBitMapOpaque(0 /*background*/, 0 /*rotation*/, base); // vtbl+0x54
}
warehouse->bitMapBin.Release(joystickImage);