standalone: allow scaler to cut off the letterbox
[pcsx_rearmed.git] / frontend / plugin_lib.c
index 50aba22..43216c6 100644 (file)
@@ -227,12 +227,12 @@ static void update_layer_size(int w, int h)
                break;
        }
 
-       g_layer_x = g_menuscreen_w / 2 - g_layer_w / 2;
-       g_layer_y = g_menuscreen_h / 2 - g_layer_h / 2;
-       if (g_layer_x < 0) g_layer_x = 0;
-       if (g_layer_y < 0) g_layer_y = 0;
-       if (g_layer_w > g_menuscreen_w) g_layer_w = g_menuscreen_w;
-       if (g_layer_h > g_menuscreen_h) g_layer_h = g_menuscreen_h;
+       if (g_scaler != SCALE_CUSTOM) {
+               g_layer_x = g_menuscreen_w / 2 - g_layer_w / 2;
+               g_layer_y = g_menuscreen_h / 2 - g_layer_h / 2;
+       }
+       if (g_layer_w > g_menuscreen_w * 2) g_layer_w = g_menuscreen_w * 2;
+       if (g_layer_h > g_menuscreen_h * 2) g_layer_h = g_menuscreen_h * 2;
 }
 
 // XXX: this is platform specific really
@@ -391,17 +391,21 @@ static void pl_vout_flip(const void *vram, int stride, int bgr24,
        }
        else if (scanlines != 0 && scanline_level != 100)
        {
-               int l = scanline_level * 2048 / 100;
+               int h2, l = scanline_level * 2048 / 100;
                int stride_0 = pl_vout_scale_h >= 2 ? 0 : stride;
 
                h1 *= pl_vout_scale_h;
-               for (; h1 >= 2; h1 -= 2)
+               while (h1 > 0)
                {
-                       bgr555_to_rgb565(dest, src, w * 2);
-                       dest += dstride * 2, src += stride_0;
+                       for (h2 = scanlines; h2 > 0 && h1 > 0; h2--, h1--) {
+                               bgr555_to_rgb565(dest, src, w * 2);
+                               dest += dstride * 2, src += stride_0;
+                       }
 
-                       bgr555_to_rgb565_b(dest, src, w * 2, l);
-                       dest += dstride * 2, src += stride;
+                       for (h2 = scanlines; h2 > 0 && h1 > 0; h2--, h1--) {
+                               bgr555_to_rgb565_b(dest, src, w * 2, l);
+                               dest += dstride * 2, src += stride;
+                       }
                }
        }
 #endif