summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2018-11-09 04:28:31 +0100
committerGitHub <noreply@github.com>2018-11-09 04:28:31 +0100
commit541c5ee996e4efe2b67ce58aff27633cb1104906 (patch)
tree1e58493a54052ffe5783361a2b199d9bd9c45c5b /Source/Core/VideoCommon
parent98d2e278b066a802296f96221859e0a497a08891 (diff)
parenta42432cae4c9a61dad6b0f8681ae6fe1945994a0 (diff)
Merge pull request #7550 from JosJuice/widescreen-hack-suggested-ratio
Fix the widescreen hack for Wii games with 4:3 forced in game INI
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/RenderBase.cpp17
-rw-r--r--Source/Core/VideoCommon/VideoConfig.cpp3
-rw-r--r--Source/Core/VideoCommon/VideoConfig.h1
3 files changed, 16 insertions, 5 deletions
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp
index 448b195a62..2e42ed984a 100644
--- a/Source/Core/VideoCommon/RenderBase.cpp
+++ b/Source/Core/VideoCommon/RenderBase.cpp
@@ -85,8 +85,7 @@ Renderer::Renderer(int backbuffer_width, int backbuffer_height)
UpdateDrawRectangle();
CalculateTargetSize();
- if (SConfig::GetInstance().bWii)
- m_aspect_wide = Config::Get(Config::SYSCONF_WIDESCREEN);
+ m_aspect_wide = SConfig::GetInstance().bWii && Config::Get(Config::SYSCONF_WIDESCREEN);
m_last_host_config_bits = ShaderHostConfig::GetCurrent().bits;
m_last_efb_multisamples = g_ActiveConfig.iMultisamples;
@@ -639,9 +638,19 @@ void Renderer::RecordVideoMemory()
void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, const EFBRectangle& rc,
u64 ticks)
{
- // Heuristic to detect if a GameCube game is in 16:9 anamorphic widescreen mode.
- if (!SConfig::GetInstance().bWii)
+ const AspectMode suggested = g_ActiveConfig.suggested_aspect_mode;
+ if (suggested == AspectMode::Analog || suggested == AspectMode::AnalogWide)
+ {
+ m_aspect_wide = suggested == AspectMode::AnalogWide;
+ }
+ else if (SConfig::GetInstance().bWii)
+ {
+ m_aspect_wide = Config::Get(Config::SYSCONF_WIDESCREEN);
+ }
+ else
{
+ // Heuristic to detect if a GameCube game is in 16:9 anamorphic widescreen mode.
+
size_t flush_count_4_3, flush_count_anamorphic;
std::tie(flush_count_4_3, flush_count_anamorphic) =
g_vertex_manager->ResetFlushAspectRatioCount();
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index b4da204fe4..cc14b191fd 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -62,8 +62,9 @@ void VideoConfig::Refresh()
bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK);
const AspectMode config_aspect_mode = Config::Get(Config::GFX_ASPECT_RATIO);
+ suggested_aspect_mode = Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO);
if (config_aspect_mode == AspectMode::Auto)
- aspect_mode = Config::Get(Config::GFX_SUGGESTED_ASPECT_RATIO);
+ aspect_mode = suggested_aspect_mode;
else
aspect_mode = config_aspect_mode;
bCrop = Config::Get(Config::GFX_CROP);
diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h
index 054fc9680a..1ea9f16661 100644
--- a/Source/Core/VideoCommon/VideoConfig.h
+++ b/Source/Core/VideoCommon/VideoConfig.h
@@ -62,6 +62,7 @@ struct VideoConfig final
bool bVSync;
bool bWidescreenHack;
AspectMode aspect_mode;
+ AspectMode suggested_aspect_mode;
bool bCrop; // Aspect ratio controls.
bool bShaderCache;