frontend: fix integer-prefer scaler
[pcsx_rearmed.git] / frontend / menu.c
index de13ad9..83ad1c4 100644 (file)
@@ -81,8 +81,13 @@ static int psx_clock;
 static int memcard1_sel, memcard2_sel;
 int g_opts, analog_deadzone;
 
+#ifdef __ARM_ARCH_7A__
+#define DEFAULT_PSX_CLOCK 57
+#define DEFAULT_PSX_CLOCK_S "57"
+#else
 #define DEFAULT_PSX_CLOCK 50
 #define DEFAULT_PSX_CLOCK_S "50"
+#endif
 
 // sound plugin
 extern int iUseReverb;
@@ -2004,16 +2009,10 @@ void menu_notify_mode_change(int w, int h, int bpp)
                g_layer_w = w; g_layer_h = h;
                break;
 
-       case SCALE_4_3:
-               mult = 240.0f / (float)h * 4.0f / 3.0f;
-               if (h > 256)
-                       mult *= 2.0f;
-               g_layer_w = mult * (float)g_menuscreen_h;
-               g_layer_h = g_menuscreen_h;
-               printf("  -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult);
-               break;
-
        case SCALE_4_3v2:
+               if (h > g_menuscreen_h || (240 < h && h <= 360))
+                       goto fractional_4_3;
+
                // 4:3 that prefers integer scaling
                imult = g_menuscreen_h / h;
                g_layer_w = w * imult;
@@ -2024,6 +2023,16 @@ void menu_notify_mode_change(int w, int h, int bpp)
                printf("  -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult);
                break;
 
+       fractional_4_3:
+       case SCALE_4_3:
+               mult = 240.0f / (float)h * 4.0f / 3.0f;
+               if (h > 256)
+                       mult *= 2.0f;
+               g_layer_w = mult * (float)g_menuscreen_h;
+               g_layer_h = g_menuscreen_h;
+               printf("  -> %dx%d %.1f\n", g_layer_w, g_layer_h, mult);
+               break;
+
        case SCALE_FULLSCREEN:
                g_layer_w = g_menuscreen_w;
                g_layer_h = g_menuscreen_h;