diff --git a/Core/Compatibility.cpp b/Core/Compatibility.cpp index a9f1a7556e82..11233bf1bb52 100644 --- a/Core/Compatibility.cpp +++ b/Core/Compatibility.cpp @@ -97,6 +97,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) { CheckSetting(iniFile, gameID, "AtracLoopHack", &flags_.AtracLoopHack); CheckSetting(iniFile, gameID, "DeswizzleDepth", &flags_.DeswizzleDepth); CheckSetting(iniFile, gameID, "SplitFramebufferMargin", &flags_.SplitFramebufferMargin); + CheckSetting(iniFile, gameID, "ForceLowerResolutionForEffectsOn", &flags_.ForceLowerResolutionForEffectsOn); } void Compatibility::CheckSetting(IniFile &iniFile, const std::string &gameID, const char *option, bool *flag) { diff --git a/Core/Compatibility.h b/Core/Compatibility.h index 97f2d480755b..9b1dfa5fd779 100644 --- a/Core/Compatibility.h +++ b/Core/Compatibility.h @@ -87,6 +87,7 @@ struct CompatFlags { bool AtracLoopHack; bool DeswizzleDepth; bool SplitFramebufferMargin; + bool ForceLowerResolutionForEffectsOn; }; class IniFile; diff --git a/GPU/Common/FramebufferManagerCommon.cpp b/GPU/Common/FramebufferManagerCommon.cpp index 3656475fc479..d907f1ac2f10 100644 --- a/GPU/Common/FramebufferManagerCommon.cpp +++ b/GPU/Common/FramebufferManagerCommon.cpp @@ -84,14 +84,17 @@ void FramebufferManagerCommon::Init() { bool FramebufferManagerCommon::UpdateSize() { const bool newRender = renderWidth_ != (float)PSP_CoreParameter().renderWidth || renderHeight_ != (float)PSP_CoreParameter().renderHeight; - const bool newSettings = bloomHack_ != g_Config.iBloomHack || useBufferedRendering_ != (g_Config.iRenderingMode != FB_NON_BUFFERED_MODE); + + const int effectiveBloomHack = PSP_CoreParameter().compat.flags().ForceLowerResolutionForEffectsOn ? 3 : g_Config.iBloomHack; + + const bool newSettings = bloomHack_ != effectiveBloomHack || useBufferedRendering_ != (g_Config.iRenderingMode != FB_NON_BUFFERED_MODE); renderWidth_ = (float)PSP_CoreParameter().renderWidth; renderHeight_ = (float)PSP_CoreParameter().renderHeight; renderScaleFactor_ = (float)PSP_CoreParameter().renderScaleFactor; pixelWidth_ = PSP_CoreParameter().pixelWidth; pixelHeight_ = PSP_CoreParameter().pixelHeight; - bloomHack_ = g_Config.iBloomHack; + bloomHack_ = effectiveBloomHack; useBufferedRendering_ = g_Config.iRenderingMode != FB_NON_BUFFERED_MODE; presentation_->UpdateSize(pixelWidth_, pixelHeight_, renderWidth_, renderHeight_); diff --git a/assets/compat.ini b/assets/compat.ini index 4a6dbc6caaf0..d94f8534ca41 100644 --- a/assets/compat.ini +++ b/assets/compat.ini @@ -1269,3 +1269,17 @@ UCUS98646 = true UCET00278 = true UCUS98670 = true UCUS98646 = true + +[ForceLowerResolutionForEffectsOn] +# The water effect of DiRT 2 and Outrun doesn't work in higher resolutions. + +# Colin McRae's DiRT 2 - issue #13012 (water) +ULUS10471 = true +ULJM05533 = true +NPJH50006 = true +ULES01301 = true + +# Outrun 2006: Coast to Coast - issue #11358 (car reflections), #11928 (water) +ULES00262 = true +ULUS10064 = true +ULKS46087 = true