diff --git a/src/core/cheats.cpp b/src/core/cheats.cpp index 662afb334..5697739ab 100644 --- a/src/core/cheats.cpp +++ b/src/core/cheats.cpp @@ -173,6 +173,7 @@ public: std::optional override_aspect_ratio; bool has_options : 1; bool disable_widescreen_rendering : 1; + bool enable_8mb_ram : 1; bool disallow_for_achievements : 1; }; @@ -270,8 +271,8 @@ Cheats::CheatCode::~CheatCode() = default; bool Cheats::CheatCode::HasAnySettingOverrides() const { - return (m_metadata.disable_widescreen_rendering || m_metadata.override_aspect_ratio.has_value() || - m_metadata.override_cpu_overclock.has_value()); + return (m_metadata.disable_widescreen_rendering || m_metadata.enable_8mb_ram || + m_metadata.override_aspect_ratio.has_value() || m_metadata.override_cpu_overclock.has_value()); } void Cheats::CheatCode::ApplySettingOverrides() @@ -281,6 +282,11 @@ void Cheats::CheatCode::ApplySettingOverrides() DEV_LOG("Disabling widescreen rendering from {} patch.", GetName()); g_settings.gpu_widescreen_hack = false; } + if (m_metadata.enable_8mb_ram && !g_settings.enable_8mb_ram) + { + DEV_LOG("Enabling 8MB ram from {} patch.", GetName()); + g_settings.enable_8mb_ram = true; + } if (m_metadata.override_aspect_ratio.has_value() && g_settings.display_aspect_ratio == DisplayAspectRatio::Auto) { DEV_LOG("Setting aspect ratio to {} from {} patch.", @@ -1526,6 +1532,10 @@ void Cheats::ParseFile(CheatCodeList* dst_list, const std::string_view file_cont { next_code_metadata.disable_widescreen_rendering = StringUtil::FromChars(value).value_or(false); } + else if (key == "Enable8MBRAM") + { + next_code_metadata.enable_8mb_ram = StringUtil::FromChars(value).value_or(false); + } else if (key == "DisallowForAchievements") { next_code_metadata.disallow_for_achievements = StringUtil::FromChars(value).value_or(false);