if (redraw_mask & REDRAW_FPS)
DrawFramesPerSecond();
+ // remove playfield redraw before potentially merging with doors redraw
+ if (DrawingDeactivated(REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE))
+ redraw_mask &= ~REDRAW_FIELD;
+
// redraw complete window if both playfield and (some) doors need redraw
if (redraw_mask & REDRAW_FIELD && redraw_mask & REDRAW_DOORS)
redraw_mask = REDRAW_ALL;
x2 = MAX(x2, DX + DXSIZE);
y2 = MAX(y2, DY + DYSIZE);
}
- else if (redraw_mask & REDRAW_DOOR_2)
+
+ if (redraw_mask & REDRAW_DOOR_2)
{
x1 = MIN(x1, VX);
y1 = MIN(y1, VY);
x2 = MAX(x2, VX + VXSIZE);
y2 = MAX(y2, VY + VYSIZE);
}
- else if (redraw_mask & REDRAW_DOOR_3)
+
+ if (redraw_mask & REDRAW_DOOR_3)
{
x1 = MIN(x1, EX);
y1 = MIN(y1, EY);
static void SetScreenStates_BeforeFadingOut()
{
+ // required if "fade_mask != redraw_mask" (fading only affects fade area)
+ BackToFront();
+
// store new target screen (to use correct masked border for fading)
gfx.fade_border_target_status = game_status;