scale screen gap

also moar optimization...
This commit is contained in:
Arisotura
2019-05-11 01:46:38 +02:00
parent 44e1593e1f
commit 858c0eecb9
2 changed files with 14 additions and 11 deletions

View File

@ -773,16 +773,16 @@ void GPU2D::DrawScanline(u32 line)
// convert to 32-bit BGRA // convert to 32-bit BGRA
// note: 32-bit RGBA would be more straightforward, but // note: 32-bit RGBA would be more straightforward, but
// BGRA seems to be more compatible (Direct2D soft, cairo...) // BGRA seems to be more compatible (Direct2D soft, cairo...)
for (int i = 0; i < LineStride; i++) for (int i = 0; i < LineStride; i+=2)
{ {
u32 c = dst[i]; u64 c = *(u64*)&dst[i];
u32 r = c << 18; u64 r = (c << 18) & 0xFC000000FC0000;
u32 g = (c << 2) & 0xFC00; u64 g = (c << 2) & 0xFC000000FC00;
u32 b = (c >> 14) & 0xFC; u64 b = (c >> 14) & 0xFC000000FC;
c = r | g | b; c = r | g | b;
dst[i] = c | ((c & 0x00C0C0C0) >> 6) | 0xFF000000; *(u64*)&dst[i] = c | ((c & 0x00C0C0C000C0C0C0) >> 6) | 0xFF000000FF000000;
} }
} }

View File

@ -812,7 +812,7 @@ void SetupScreenRects(int width, int height)
else else
sizemode = ScreenSizing; sizemode = ScreenSizing;
int screenW, screenH; int screenW, screenH, gap;
if (sideways) if (sideways)
{ {
screenW = 192; screenW = 192;
@ -824,8 +824,11 @@ void SetupScreenRects(int width, int height)
screenH = 192; screenH = 192;
} }
gap = ScreenGap;
screenW *= ScreenScale; screenW *= ScreenScale;
screenH *= ScreenScale; screenH *= ScreenScale;
gap *= ScreenScale;
uiRect *topscreen, *bottomscreen; uiRect *topscreen, *bottomscreen;
if (ScreenRotation == 1 || ScreenRotation == 2) if (ScreenRotation == 1 || ScreenRotation == 2)
@ -846,7 +849,7 @@ void SetupScreenRects(int width, int height)
int heightreq; int heightreq;
int startX = 0; int startX = 0;
width -= ScreenGap; width -= gap;
if (sizemode == 0) // even if (sizemode == 0) // even
{ {
@ -884,7 +887,7 @@ void SetupScreenRects(int width, int height)
topscreen->X = startX; topscreen->X = startX;
topscreen->Y = ((height - heightreq) / 2) + (heightreq - topscreen->Height); topscreen->Y = ((height - heightreq) / 2) + (heightreq - topscreen->Height);
bottomscreen->X = topscreen->X + topscreen->Width + ScreenGap; bottomscreen->X = topscreen->X + topscreen->Width + gap;
if (sizemode == 1) if (sizemode == 1)
{ {
@ -905,7 +908,7 @@ void SetupScreenRects(int width, int height)
int widthreq; int widthreq;
int startY = 0; int startY = 0;
height -= ScreenGap; height -= gap;
if (sizemode == 0) // even if (sizemode == 0) // even
{ {
@ -943,7 +946,7 @@ void SetupScreenRects(int width, int height)
topscreen->Y = startY; topscreen->Y = startY;
topscreen->X = (width - topscreen->Width) / 2; topscreen->X = (width - topscreen->Width) / 2;
bottomscreen->Y = topscreen->Y + topscreen->Height + ScreenGap; bottomscreen->Y = topscreen->Y + topscreen->Height + gap;
if (sizemode == 1) if (sizemode == 1)
{ {