From 3ec30ee28a703427ece2c7981066996d246fee56 Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Mon, 3 Aug 2026 20:50:50 -0500 Subject: [PATCH] #118 fix: eject-wipe DrawBitMap arg smeared the weapon MFDs (capture.png) The BitMapInverseWipeScalar Execute passed the colour constants as DrawBitMap's first argument; the sibling wipe always passes 0 there (colour selection is SetColor only). The nonzero arg smeared striped garbage across the weapon MFD pages from the gauge's first draw (operator's capture.png). Pixel-verified clean after the fix (weapon pages pristine, eject graphic path unchanged). Co-Authored-By: Claude Fable 5 --- game/reconstructed/btl4gaug.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/game/reconstructed/btl4gaug.cpp b/game/reconstructed/btl4gaug.cpp index 1f9fd72..0c424eb 100644 --- a/game/reconstructed/btl4gaug.cpp +++ b/game/reconstructed/btl4gaug.cpp @@ -2228,18 +2228,24 @@ void BitMapInverseWipeScalar::Execute() if (bmp != NULL) { int split = level; + // DrawBitMap's first argument is ALWAYS 0 in the sibling wipe's + // Execute (btl4gaug LeakGauge) -- passing a colour there smeared + // the whole gauge surface (field-caught: striped garbage across + // the weapon MFD pages, git/capture.png 2026-08-03). Colour + // selection is SetColor only; the two spans carry the inverted + // pair via SetColor alone. if (split != 0) { localView.MoveToAbsolute(0, 0); localView.SetColor(colorA); - localView.DrawBitMap(colorB, bmp, 0, 0, split, height); + localView.DrawBitMap(0, bmp, 0, 0, split, height); ++split; // the binary's iVar2++ } if (split < width) { localView.MoveToAbsolute(split, 0); localView.SetColor(colorB); - localView.DrawBitMap(colorA, bmp, split, 0, width, height); + localView.DrawBitMap(0, bmp, split, 0, width, height); } warehouse->bitMapBin.Release(imageName); }