From 17a4712a3e7f666b3613822a79dd8298280b0162 Mon Sep 17 00:00:00 2001
From: Connor McLaughlin <stenzek@gmail.com>
Date: Fri, 30 Apr 2021 02:29:39 +1000
Subject: [PATCH] Settings: Remove less-frequently used AR options

You can easily set this via custom ratios, or match window now.
---
 android/app/src/main/res/values-es/arrays.xml |  8 --
 android/app/src/main/res/values-it/arrays.xml |  8 --
 android/app/src/main/res/values-nl/arrays.xml |  8 --
 .../app/src/main/res/values-pt-rBR/arrays.xml | 22 ++----
 android/app/src/main/res/values-ru/arrays.xml | 16 +---
 android/app/src/main/res/values/arrays.xml    | 16 ----
 src/core/gte.cpp                              | 74 ++-----------------
 src/core/settings.cpp                         | 11 ++-
 src/core/types.h                              |  8 --
 9 files changed, 21 insertions(+), 150 deletions(-)

diff --git a/android/app/src/main/res/values-es/arrays.xml b/android/app/src/main/res/values-es/arrays.xml
index 4ae8d947e..6cc05fdfb 100644
--- a/android/app/src/main/res/values-es/arrays.xml
+++ b/android/app/src/main/res/values-es/arrays.xml
@@ -48,16 +48,8 @@
         <item>Auto (Match Display)</item>
         <item>4:3</item>
         <item>16:9</item>
-        <item>16:10</item>
         <item>19:9</item>
         <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
         <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_gpu_texture_filter_names">
diff --git a/android/app/src/main/res/values-it/arrays.xml b/android/app/src/main/res/values-it/arrays.xml
index ace19f3c9..49d62453d 100644
--- a/android/app/src/main/res/values-it/arrays.xml
+++ b/android/app/src/main/res/values-it/arrays.xml
@@ -48,16 +48,8 @@
         <item>Auto (Match Display)</item>
         <item>4:3</item>
         <item>16:9</item>
-        <item>16:10</item>
         <item>19:9</item>
         <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
         <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_gpu_texture_filter_names">
diff --git a/android/app/src/main/res/values-nl/arrays.xml b/android/app/src/main/res/values-nl/arrays.xml
index 2ff0056a1..1a4d85040 100644
--- a/android/app/src/main/res/values-nl/arrays.xml
+++ b/android/app/src/main/res/values-nl/arrays.xml
@@ -48,16 +48,8 @@
         <item>Auto (Match Display)</item>
         <item>4:3</item>
         <item>16:9</item>
-        <item>16:10</item>
         <item>19:9</item>
         <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
         <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_gpu_texture_filter_names">
diff --git a/android/app/src/main/res/values-pt-rBR/arrays.xml b/android/app/src/main/res/values-pt-rBR/arrays.xml
index 678cc19d1..67fa47521 100644
--- a/android/app/src/main/res/values-pt-rBR/arrays.xml
+++ b/android/app/src/main/res/values-pt-rBR/arrays.xml
@@ -44,21 +44,13 @@
         <item>Todas as Bordas</item>
     </string-array>
     <string-array name="settings_display_aspect_ratio_names">
-       <item>Auto (Nativo)</item>
-        <item>Auto (Match Display)</item>
-        <item>4:3</item>
-        <item>16:9</item>
-        <item>16:10</item>
-        <item>19:9</item>
-        <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
-        <item>PAR 1:1</item>
+      <item>Auto (Nativo)</item>
+      <item>Auto (Match Display)</item>
+      <item>4:3</item>
+      <item>16:9</item>
+      <item>19:9</item>
+      <item>20:9</item>
+      <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_gpu_texture_filter_names">
         <item>Nearest-Neighbor</item>
diff --git a/android/app/src/main/res/values-ru/arrays.xml b/android/app/src/main/res/values-ru/arrays.xml
index 7745642d6..c56432c93 100644
--- a/android/app/src/main/res/values-ru/arrays.xml
+++ b/android/app/src/main/res/values-ru/arrays.xml
@@ -47,18 +47,10 @@
     <item>Автонастройка (нативное игре)</item>
     <item>Auto (Match Display)</item>
     <item>4:3</item>
-		<item>16:9</item>
-		<item>16:10</item>
-		<item>19:9</item>
-		<item>20:9</item>
-		<item>21:9</item>
-		<item>32:9</item>
-		<item>8:7</item>
-		<item>5:4</item>
-		<item>3:2</item>
-		<item>2:1 (VRAM 1:1)</item>
-		<item>1:1</item>
-		<item>PAR 1:1</item>
+    <item>16:9</item>
+    <item>19:9</item>
+    <item>20:9</item>
+    <item>PAR 1:1</item>
 	</string-array>
 	<string-array name="settings_gpu_texture_filter_names">
 		<item>Метод ближайшего соседа</item>
diff --git a/android/app/src/main/res/values/arrays.xml b/android/app/src/main/res/values/arrays.xml
index 82e703dcd..baa597043 100644
--- a/android/app/src/main/res/values/arrays.xml
+++ b/android/app/src/main/res/values/arrays.xml
@@ -92,16 +92,8 @@
         <item>Auto (Match Display)</item>
         <item>4:3</item>
         <item>16:9</item>
-        <item>16:10</item>
         <item>19:9</item>
         <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
         <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_display_aspect_ratio_values">
@@ -109,16 +101,8 @@
         <item>Auto (Match Window)</item>
         <item>4:3</item>
         <item>16:9</item>
-        <item>16:10</item>
         <item>19:9</item>
         <item>20:9</item>
-        <item>21:9</item>
-        <item>32:9</item>
-        <item>8:7</item>
-        <item>5:4</item>
-        <item>3:2</item>
-        <item>2:1 (VRAM 1:1)</item>
-        <item>1:1</item>
         <item>PAR 1:1</item>
     </string-array>
     <string-array name="settings_gpu_texture_filter_names">
diff --git a/src/core/gte.cpp b/src/core/gte.cpp
index 71a492385..6ae096391 100644
--- a/src/core/gte.cpp
+++ b/src/core/gte.cpp
@@ -678,10 +678,6 @@ static void RTPS(const s16 V[3], u8 shift, bool lm, bool last)
       Sx = ((((s64(result) * s64(REGS.IR1)) * s64(3)) / s64(4)) + s64(REGS.OFX));
       break;
 
-    case DisplayAspectRatio::R16_10:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(5)) / s64(6)) + s64(REGS.OFX));
-      break;
-
     case DisplayAspectRatio::R19_9:
       Sx = ((((s64(result) * s64(REGS.IR1)) * s64(12)) / s64(19)) + s64(REGS.OFX));
       break;
@@ -690,34 +686,6 @@ static void RTPS(const s16 V[3], u8 shift, bool lm, bool last)
       Sx = ((((s64(result) * s64(REGS.IR1)) * s64(3)) / s64(5)) + s64(REGS.OFX));
       break;
 
-    case DisplayAspectRatio::R21_9:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(9)) / s64(16)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R32_9:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(3)) / s64(8)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R8_7:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(7)) / s64(6)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R5_4:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(16)) / s64(15)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R3_2:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(8)) / s64(9)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R2_1:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(2)) / s64(3)) + s64(REGS.OFX));
-      break;
-
-    case DisplayAspectRatio::R1_1:
-      Sx = ((((s64(result) * s64(REGS.IR1)) * s64(7)) / s64(6)) + s64(REGS.OFX));
-      break;
-
     case DisplayAspectRatio::Custom:
     case DisplayAspectRatio::MatchWindow:
       Sx = ((((s64(result) * s64(REGS.IR1)) * s64(s_custom_aspect_ratio_numerator)) /
@@ -774,12 +742,13 @@ static void RTPS(const s16 V[3], u8 shift, bool lm, bool last)
 
     switch (s_aspect_ratio)
     {
-      case DisplayAspectRatio::R16_9:
-        precise_x = (precise_x * 3.0f) / 4.0f;
+      case DisplayAspectRatio::MatchWindow:
+      case DisplayAspectRatio::Custom:
+        precise_x = precise_x * s_custom_aspect_ratio_f;
         break;
 
-      case DisplayAspectRatio::R16_10:
-        precise_x = (precise_x * 5.0f) / 6.0f;
+      case DisplayAspectRatio::R16_9:
+        precise_x = (precise_x * 3.0f) / 4.0f;
         break;
 
       case DisplayAspectRatio::R19_9:
@@ -790,39 +759,6 @@ static void RTPS(const s16 V[3], u8 shift, bool lm, bool last)
         precise_x = (precise_x * 3.0f) / 5.0f;
         break;
 
-      case DisplayAspectRatio::R21_9:
-        precise_x = (precise_x * 9.0f) / 16.0f;
-        break;
-
-      case DisplayAspectRatio::R32_9:
-        precise_x = (precise_x * 3.0f) / 8.0f;
-        break;
-
-      case DisplayAspectRatio::R8_7:
-        precise_x = (precise_x * 7.0f) / 6.0f;
-        break;
-
-      case DisplayAspectRatio::R5_4:
-        precise_x = (precise_x * 16.0f) / 15.0f;
-        break;
-
-      case DisplayAspectRatio::R3_2:
-        precise_x = (precise_x * 8.0f) / 9.0f;
-        break;
-
-      case DisplayAspectRatio::R2_1:
-        precise_x = (precise_x * 2.0f) / 3.0f;
-        break;
-
-      case DisplayAspectRatio::R1_1:
-        precise_x = (precise_x * 7.0f) / 6.0f;
-        break;
-
-      case DisplayAspectRatio::MatchWindow:
-      case DisplayAspectRatio::Custom:
-        precise_x = precise_x * s_custom_aspect_ratio_f;
-        break;
-
       case DisplayAspectRatio::Auto:
       case DisplayAspectRatio::R4_3:
       case DisplayAspectRatio::PAR1_1:
diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index d44559794..f54ca57f1 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -774,12 +774,11 @@ const char* Settings::GetDisplayCropModeDisplayName(DisplayCropMode crop_mode)
   return s_display_crop_mode_display_names[static_cast<int>(crop_mode)];
 }
 
-static std::array<const char*, 16> s_display_aspect_ratio_names = {
-  {TRANSLATABLE("DisplayAspectRatio", "Auto (Game Native)"), "Auto (Match Window)", "Custom", "4:3", "16:9", "16:10",
-   "19:9", "20:9", "21:9", "32:9", "8:7", "5:4", "3:2", "2:1 (VRAM 1:1)", "1:1", "PAR 1:1"}};
-static constexpr std::array<float, 16> s_display_aspect_ratio_values = {
-  {-1.0f, -1.0f, -1.0f, 4.0f / 3.0f, 16.0f / 9.0f, 16.0f / 10.0f, 19.0f / 9.0f, 20.0f / 9.0f, 64.0f / 27.0f,
-   32.0f / 9.0f, 8.0f / 7.0f, 5.0f / 4.0f, 3.0f / 2.0f, 2.0f / 1.0f, 1.0f, -1.0f}};
+static std::array<const char*, static_cast<size_t>(DisplayAspectRatio::Count)> s_display_aspect_ratio_names = {
+  {TRANSLATABLE("DisplayAspectRatio", "Auto (Game Native)"), "Auto (Match Window)", "Custom", "4:3", "16:9", "19:9",
+   "20:9", "PAR 1:1"}};
+static constexpr std::array<float, static_cast<size_t>(DisplayAspectRatio::Count)> s_display_aspect_ratio_values = {
+  {-1.0f, -1.0f, -1.0f, 4.0f / 3.0f, 16.0f / 9.0f, 19.0f / 9.0f, 20.0f / 9.0f, -1.0f}};
 
 std::optional<DisplayAspectRatio> Settings::ParseDisplayAspectRatio(const char* str)
 {
diff --git a/src/core/types.h b/src/core/types.h
index 8ad8f7611..86709dbf1 100644
--- a/src/core/types.h
+++ b/src/core/types.h
@@ -98,16 +98,8 @@ enum class DisplayAspectRatio : u8
   Custom,
   R4_3,
   R16_9,
-  R16_10,
   R19_9,
   R20_9,
-  R21_9,
-  R32_9,
-  R8_7,
-  R5_4,
-  R3_2,
-  R2_1,
-  R1_1,
   PAR1_1,
   Count
 };