From e58ba76f07d47aa09e01acf7ead37f7420bb241c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?L=C3=A9o=20Lam?= <leo@innovatetechnologi.es>
Date: Wed, 2 Aug 2017 16:30:34 +0800
Subject: [PATCH] Don't force the aspect ratio in GameINIs

Instead, add a SuggestedAspectRatio option which tells Dolphin which
aspect ratio to use when the aspect ratio option is set to Auto.
---
 Data/Sys/GameSettings/C.ini                         | 2 +-
 Data/Sys/GameSettings/E.ini                         | 2 +-
 Data/Sys/GameSettings/F.ini                         | 2 +-
 Data/Sys/GameSettings/J.ini                         | 2 +-
 Data/Sys/GameSettings/L.ini                         | 2 +-
 Data/Sys/GameSettings/M.ini                         | 2 +-
 Data/Sys/GameSettings/N.ini                         | 2 +-
 Data/Sys/GameSettings/P.ini                         | 2 +-
 Data/Sys/GameSettings/Q.ini                         | 2 +-
 Data/Sys/GameSettings/R55.ini                       | 2 +-
 Data/Sys/GameSettings/RBI.ini                       | 2 +-
 Data/Sys/GameSettings/RBL.ini                       | 2 +-
 Data/Sys/GameSettings/RBT.ini                       | 2 +-
 Data/Sys/GameSettings/RCC.ini                       | 2 +-
 Data/Sys/GameSettings/RCP.ini                       | 2 +-
 Data/Sys/GameSettings/RDB.ini                       | 2 +-
 Data/Sys/GameSettings/RDS.ini                       | 2 +-
 Data/Sys/GameSettings/RG2.ini                       | 2 +-
 Data/Sys/GameSettings/RGB.ini                       | 2 +-
 Data/Sys/GameSettings/RGM.ini                       | 2 +-
 Data/Sys/GameSettings/RGS.ini                       | 2 +-
 Data/Sys/GameSettings/RI3.ini                       | 2 +-
 Data/Sys/GameSettings/RKD.ini                       | 2 +-
 Data/Sys/GameSettings/RLT.ini                       | 2 +-
 Data/Sys/GameSettings/RMP.ini                       | 2 +-
 Data/Sys/GameSettings/RNX.ini                       | 2 +-
 Data/Sys/GameSettings/ROD.ini                       | 2 +-
 Data/Sys/GameSettings/RPG.ini                       | 2 +-
 Data/Sys/GameSettings/RPY.ini                       | 2 +-
 Data/Sys/GameSettings/RQW.ini                       | 2 +-
 Data/Sys/GameSettings/RRB.ini                       | 2 +-
 Data/Sys/GameSettings/RS5.ini                       | 2 +-
 Data/Sys/GameSettings/RTR.ini                       | 2 +-
 Source/Core/Core/Config/GraphicsSettings.cpp        | 2 ++
 Source/Core/Core/Config/GraphicsSettings.h          | 1 +
 Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp | 1 +
 Source/Core/VideoCommon/VideoConfig.cpp             | 6 +++++-
 37 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/Data/Sys/GameSettings/C.ini b/Data/Sys/GameSettings/C.ini
index 084aa50d72..874b6257d0 100644
--- a/Data/Sys/GameSettings/C.ini
+++ b/Data/Sys/GameSettings/C.ini
@@ -11,5 +11,5 @@ EmulationIssues =
 [Video]
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/E.ini b/Data/Sys/GameSettings/E.ini
index f585371f1a..603b2b1f22 100644
--- a/Data/Sys/GameSettings/E.ini
+++ b/Data/Sys/GameSettings/E.ini
@@ -9,5 +9,5 @@ EmulationIssues =
 EmulationStateId = 4
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/F.ini b/Data/Sys/GameSettings/F.ini
index 6479233e6d..330fa13e4f 100644
--- a/Data/Sys/GameSettings/F.ini
+++ b/Data/Sys/GameSettings/F.ini
@@ -9,7 +9,7 @@ EmulationIssues = Texture filtering will cause glitches.
 EmulationStateId = 4
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
 
 [Video_Hacks]
diff --git a/Data/Sys/GameSettings/J.ini b/Data/Sys/GameSettings/J.ini
index cf3f5a042e..b0dd2cb46f 100644
--- a/Data/Sys/GameSettings/J.ini
+++ b/Data/Sys/GameSettings/J.ini
@@ -9,5 +9,5 @@ EmulationIssues =
 EmulationStateId = 4
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/L.ini b/Data/Sys/GameSettings/L.ini
index 5e19517f6f..5c9ae6ca7f 100644
--- a/Data/Sys/GameSettings/L.ini
+++ b/Data/Sys/GameSettings/L.ini
@@ -9,7 +9,7 @@ EmulationStateId = 4
 EmulationIssues =
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
 UseXFB = True
 UseRealXFB = True
diff --git a/Data/Sys/GameSettings/M.ini b/Data/Sys/GameSettings/M.ini
index 22f33439db..95f131a441 100644
--- a/Data/Sys/GameSettings/M.ini
+++ b/Data/Sys/GameSettings/M.ini
@@ -9,5 +9,5 @@ EmulationIssues =
 EmulationStateId = 4
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/N.ini b/Data/Sys/GameSettings/N.ini
index d718a7aef5..0effba7558 100644
--- a/Data/Sys/GameSettings/N.ini
+++ b/Data/Sys/GameSettings/N.ini
@@ -1,4 +1,4 @@
 # Nxxxxx - All Nintendo 64 Virtual Console games
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/P.ini b/Data/Sys/GameSettings/P.ini
index 91d832745b..c2187354e6 100644
--- a/Data/Sys/GameSettings/P.ini
+++ b/Data/Sys/GameSettings/P.ini
@@ -12,5 +12,5 @@ EmulationIssues =
 [Video]
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/Q.ini b/Data/Sys/GameSettings/Q.ini
index d0b962573d..a4fc3cfeb3 100644
--- a/Data/Sys/GameSettings/Q.ini
+++ b/Data/Sys/GameSettings/Q.ini
@@ -8,5 +8,5 @@ EmulationIssues =
 [Video]
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/R55.ini b/Data/Sys/GameSettings/R55.ini
index ff66bbb8fe..a9a5548acc 100644
--- a/Data/Sys/GameSettings/R55.ini
+++ b/Data/Sys/GameSettings/R55.ini
@@ -18,5 +18,5 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 0
diff --git a/Data/Sys/GameSettings/RBI.ini b/Data/Sys/GameSettings/RBI.ini
index db075c3e33..b9b664589c 100644
--- a/Data/Sys/GameSettings/RBI.ini
+++ b/Data/Sys/GameSettings/RBI.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RBL.ini b/Data/Sys/GameSettings/RBL.ini
index 6cabba3216..843150c855 100644
--- a/Data/Sys/GameSettings/RBL.ini
+++ b/Data/Sys/GameSettings/RBL.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RBT.ini b/Data/Sys/GameSettings/RBT.ini
index 3a317678bf..6d239c667f 100644
--- a/Data/Sys/GameSettings/RBT.ini
+++ b/Data/Sys/GameSettings/RBT.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RCC.ini b/Data/Sys/GameSettings/RCC.ini
index 79e0e9c0cf..fe72fe2403 100644
--- a/Data/Sys/GameSettings/RCC.ini
+++ b/Data/Sys/GameSettings/RCC.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RCP.ini b/Data/Sys/GameSettings/RCP.ini
index 3ec6ae0459..26fc42b601 100644
--- a/Data/Sys/GameSettings/RCP.ini
+++ b/Data/Sys/GameSettings/RCP.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RDB.ini b/Data/Sys/GameSettings/RDB.ini
index 9b42154506..6bf9f7705b 100644
--- a/Data/Sys/GameSettings/RDB.ini
+++ b/Data/Sys/GameSettings/RDB.ini
@@ -18,5 +18,5 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 512
diff --git a/Data/Sys/GameSettings/RDS.ini b/Data/Sys/GameSettings/RDS.ini
index 2f5b662b56..2de521fe40 100644
--- a/Data/Sys/GameSettings/RDS.ini
+++ b/Data/Sys/GameSettings/RDS.ini
@@ -18,5 +18,5 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 512
diff --git a/Data/Sys/GameSettings/RG2.ini b/Data/Sys/GameSettings/RG2.ini
index aee76fd286..d52dac1b90 100644
--- a/Data/Sys/GameSettings/RG2.ini
+++ b/Data/Sys/GameSettings/RG2.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RGB.ini b/Data/Sys/GameSettings/RGB.ini
index 0caafc74c3..ef8d471fce 100644
--- a/Data/Sys/GameSettings/RGB.ini
+++ b/Data/Sys/GameSettings/RGB.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RGM.ini b/Data/Sys/GameSettings/RGM.ini
index 7f10437514..db3632ded3 100644
--- a/Data/Sys/GameSettings/RGM.ini
+++ b/Data/Sys/GameSettings/RGM.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RGS.ini b/Data/Sys/GameSettings/RGS.ini
index a144f9b215..5284036bb0 100644
--- a/Data/Sys/GameSettings/RGS.ini
+++ b/Data/Sys/GameSettings/RGS.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RI3.ini b/Data/Sys/GameSettings/RI3.ini
index 831f04f341..064c12eb7a 100644
--- a/Data/Sys/GameSettings/RI3.ini
+++ b/Data/Sys/GameSettings/RI3.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RKD.ini b/Data/Sys/GameSettings/RKD.ini
index 377859a960..e0d9c29e3d 100644
--- a/Data/Sys/GameSettings/RKD.ini
+++ b/Data/Sys/GameSettings/RKD.ini
@@ -18,5 +18,5 @@ EmulationStateId = 5
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
 SafeTextureCacheColorSamples = 512
diff --git a/Data/Sys/GameSettings/RLT.ini b/Data/Sys/GameSettings/RLT.ini
index b7866750bd..9082953044 100644
--- a/Data/Sys/GameSettings/RLT.ini
+++ b/Data/Sys/GameSettings/RLT.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RMP.ini b/Data/Sys/GameSettings/RMP.ini
index 3d74eb40ec..b78565c26e 100644
--- a/Data/Sys/GameSettings/RMP.ini
+++ b/Data/Sys/GameSettings/RMP.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RNX.ini b/Data/Sys/GameSettings/RNX.ini
index 17b87a7e67..8af542f855 100644
--- a/Data/Sys/GameSettings/RNX.ini
+++ b/Data/Sys/GameSettings/RNX.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/ROD.ini b/Data/Sys/GameSettings/ROD.ini
index 21187e43e7..7ec06f1b24 100644
--- a/Data/Sys/GameSettings/ROD.ini
+++ b/Data/Sys/GameSettings/ROD.ini
@@ -21,4 +21,4 @@ EmulationIssues =
 EFBEmulateFormatChanges = True
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RPG.ini b/Data/Sys/GameSettings/RPG.ini
index f39b9c17d7..54dcc904fd 100644
--- a/Data/Sys/GameSettings/RPG.ini
+++ b/Data/Sys/GameSettings/RPG.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RPY.ini b/Data/Sys/GameSettings/RPY.ini
index 6c3928ce07..7fac7f6e02 100644
--- a/Data/Sys/GameSettings/RPY.ini
+++ b/Data/Sys/GameSettings/RPY.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RQW.ini b/Data/Sys/GameSettings/RQW.ini
index 60ec5914fb..050ef11909 100644
--- a/Data/Sys/GameSettings/RQW.ini
+++ b/Data/Sys/GameSettings/RQW.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RRB.ini b/Data/Sys/GameSettings/RRB.ini
index 2458acb33a..3e51493a34 100644
--- a/Data/Sys/GameSettings/RRB.ini
+++ b/Data/Sys/GameSettings/RRB.ini
@@ -19,4 +19,4 @@ EmulationIssues = Needs Synchronise GPU thread for stability. Use direct3d11 for
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RS5.ini b/Data/Sys/GameSettings/RS5.ini
index 28f4327ff0..1d2d026fcc 100644
--- a/Data/Sys/GameSettings/RS5.ini
+++ b/Data/Sys/GameSettings/RS5.ini
@@ -21,4 +21,4 @@ EmulationIssues =
 EFBEmulateFormatChanges = True
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Data/Sys/GameSettings/RTR.ini b/Data/Sys/GameSettings/RTR.ini
index 7d0c787e5a..c0e64fb508 100644
--- a/Data/Sys/GameSettings/RTR.ini
+++ b/Data/Sys/GameSettings/RTR.ini
@@ -18,4 +18,4 @@ EmulationIssues =
 # Add action replay cheats here.
 
 [Video_Settings]
-AspectRatio = 2
+SuggestedAspectRatio = 2
diff --git a/Source/Core/Core/Config/GraphicsSettings.cpp b/Source/Core/Core/Config/GraphicsSettings.cpp
index 205fdff401..3f9347c921 100644
--- a/Source/Core/Core/Config/GraphicsSettings.cpp
+++ b/Source/Core/Core/Config/GraphicsSettings.cpp
@@ -23,6 +23,8 @@ const ConfigInfo<int> GFX_ADAPTER{{System::GFX, "Hardware", "Adapter"}, 0};
 const ConfigInfo<bool> GFX_WIDESCREEN_HACK{{System::GFX, "Settings", "wideScreenHack"}, false};
 const ConfigInfo<int> GFX_ASPECT_RATIO{{System::GFX, "Settings", "AspectRatio"},
                                        static_cast<int>(ASPECT_AUTO)};
+const ConfigInfo<int> GFX_SUGGESTED_ASPECT_RATIO{{System::GFX, "Settings", "SuggestedAspectRatio"},
+                                                 static_cast<int>(ASPECT_AUTO)};
 const ConfigInfo<bool> GFX_CROP{{System::GFX, "Settings", "Crop"}, false};
 const ConfigInfo<bool> GFX_USE_XFB{{System::GFX, "Settings", "UseXFB"}, false};
 const ConfigInfo<bool> GFX_USE_REAL_XFB{{System::GFX, "Settings", "UseRealXFB"}, false};
diff --git a/Source/Core/Core/Config/GraphicsSettings.h b/Source/Core/Core/Config/GraphicsSettings.h
index 046675d058..a50ee253c0 100644
--- a/Source/Core/Core/Config/GraphicsSettings.h
+++ b/Source/Core/Core/Config/GraphicsSettings.h
@@ -21,6 +21,7 @@ extern const ConfigInfo<int> GFX_ADAPTER;
 
 extern const ConfigInfo<bool> GFX_WIDESCREEN_HACK;
 extern const ConfigInfo<int> GFX_ASPECT_RATIO;
+extern const ConfigInfo<int> GFX_SUGGESTED_ASPECT_RATIO;
 extern const ConfigInfo<bool> GFX_CROP;
 extern const ConfigInfo<bool> GFX_USE_XFB;
 extern const ConfigInfo<bool> GFX_USE_REAL_XFB;
diff --git a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
index 84b6f41267..8613595539 100644
--- a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
+++ b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
@@ -71,6 +71,7 @@ static const INIToLocationMap& GetINIToLocationMap()
 
       {{"Video_Settings", "wideScreenHack"}, {Config::GFX_WIDESCREEN_HACK.location}},
       {{"Video_Settings", "AspectRatio"}, {Config::GFX_ASPECT_RATIO.location}},
+      {{"Video_Settings", "SuggestedAspectRatio"}, {Config::GFX_SUGGESTED_ASPECT_RATIO.location}},
       {{"Video_Settings", "Crop"}, {Config::GFX_CROP.location}},
       {{"Video_Settings", "UseXFB"}, {Config::GFX_USE_XFB.location}},
       {{"Video_Settings", "UseRealXFB"}, {Config::GFX_USE_REAL_XFB.location}},
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index 9caab54603..fa6f4dc941 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -56,7 +56,11 @@ void VideoConfig::Refresh()
   iAdapter = Config::Get(Config::GFX_ADAPTER);
 
   bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK);
-  iAspectRatio = Config::Get(Config::GFX_ASPECT_RATIO);
+  const int aspect_ratio = Config::Get(Config::GFX_ASPECT_RATIO);
+  if (aspect_ratio == ASPECT_AUTO)
+    iAspectRatio = Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO);
+  else
+    iAspectRatio = aspect_ratio;
   bCrop = Config::Get(Config::GFX_CROP);
   bUseXFB = Config::Get(Config::GFX_USE_XFB);
   bUseRealXFB = Config::Get(Config::GFX_USE_REAL_XFB);