on the DS, windows with backward coordinates end up inside-out. revise window code accordingly. fixes .

This commit is contained in:
StapleButter 2018-11-25 18:36:47 +01:00
parent 5f1f2a7b4a
commit 2035784f9f
1 changed files with 6 additions and 12 deletions

View File

@ -988,25 +988,19 @@ void GPU2D::CalculateWindowMask(u32 line, u8* mask)
if ((DispCnt & (1<<14)) && Win1Active)
{
// window 1
u32 x1 = Win1Coords[0];
u32 x2 = Win1Coords[1];
if (x2 == 0 && x1 > 0) x2 = 256;
if (x1 > x2) x2 = 255; // checkme
u8 x1 = Win1Coords[0];
u8 x2 = Win1Coords[1];
for (u32 i = x1; i < x2; i++)
mask[i] = WinCnt[1];
while (x1 != x2) mask[x1++] = WinCnt[1];
}
if ((DispCnt & (1<<13)) && Win0Active)
{
// window 0
u32 x1 = Win0Coords[0];
u32 x2 = Win0Coords[1];
if (x2 == 0 && x1 > 0) x2 = 256;
if (x1 > x2) x2 = 255; // checkme
u8 x1 = Win0Coords[0];
u8 x2 = Win0Coords[1];
for (u32 i = x1; i < x2; i++)
mask[i] = WinCnt[0];
while (x1 != x2) mask[x1++] = WinCnt[0];
}
}