From b75ea7bcba60b70349274747cca04549908797bd Mon Sep 17 00:00:00 2001 From: snowstormxd <214507868+snowstormxd@users.noreply.github.com> Date: Mon, 2 Nov 2026 20:51:10 +0000 Subject: settings: restore the recommended MKW settings prompt Apply accepted settings visibly and save them, then reapply after per-game configuration. Include handheld mode. Assisted by Codex. --- src/yuzu/main_window.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/yuzu/main_window.cpp') diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index e5a8f81424..d0cd130f6f 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -10,6 +10,7 @@ #include #include "common/fs/path_util.h" +#include "common/game_presets.h" #include "common/settings.h" #include "common/settings_enums.h" #include "frontend_common/settings_generator.h" @@ -457,6 +458,29 @@ MainWindow::MainWindow(bool has_broken_vulkan) // Gen keys if necessary OnCheckFirmwareDecryption(false); + auto* recommendations = new QMessageBox( + QMessageBox::Question, tr("Recommended Mario Kart World settings"), + tr("Use the recommended settings for Mario Kart World?\n\n" + "Vulkan, 1x resolution, GPU Fast, asynchronous shaders, BC3, conservative VRAM, " + "reactive flushing off, FIFO Relaxed VSync, and handheld mode.\n\n" + "Yes replaces your saved settings. No or closing this window keeps your settings."), + QMessageBox::Yes | QMessageBox::No, this); + recommendations->setAttribute(Qt::WA_DeleteOnClose); + recommendations->setDefaultButton(QMessageBox::No); + recommendations->setEscapeButton(QMessageBox::No); + recommendations->setWindowModality(Qt::NonModal); + connect(recommendations, &QMessageBox::finished, this, [this](int result) { + use_recommended_mkw_settings = result == QMessageBox::Yes; + if (use_recommended_mkw_settings && !emulation_running && !boot_in_progress) { + Settings::SetMarioKartWorldRecommendedSettings(Settings::values, true); + config->SaveAllValues(); + QtCommon::system->ApplySettings(); + UpdateStatusButtons(); + } + LOG_INFO(Config, "MKW recommended settings accepted: {}", use_recommended_mkw_settings); + }); + recommendations->show(); + #ifdef __unix__ OnCheckGraphicsBackend(); #endif @@ -1964,6 +1988,12 @@ void MainWindow::BootGame(const QString& filename, Service::AM::FrontendAppletPa QtCommon::system->ApplySettings(); } + if (Settings::ApplyMarioKartWorldPreset(Settings::values, title_id, + use_recommended_mkw_settings)) { + QtCommon::system->ApplySettings(); + Settings::UpdateGPUAccuracy(); + LOG_INFO(Config, "Applied recommended MKW settings after per-game configuration"); + } Settings::LogSettings(); if (UISettings::values.select_user_on_boot && !user_flag_cmd_line) { -- cgit v1.2.3 From 405adb698e5ed76b1252fec41d3cb8780d1e6a49 Mon Sep 17 00:00:00 2001 From: snowstormxd <214507868+snowstormxd@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:14:39 +0000 Subject: settings: default to ScaleForce and FXAA Include both filters in the accepted MKW preset and verify defaults and saved-preference overrides. Assisted by Codex. --- src/common/game_presets.h | 2 ++ src/common/settings.h | 4 ++-- src/tests/common/game_presets.cpp | 12 ++++++++++++ src/yuzu/main_window.cpp | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/yuzu/main_window.cpp') diff --git a/src/common/game_presets.h b/src/common/game_presets.h index f8299d948f..83dd4d3c3f 100644 --- a/src/common/game_presets.h +++ b/src/common/game_presets.h @@ -22,6 +22,8 @@ inline void SetMarioKartWorldRecommendedSettings(Values& settings, bool global) session(settings.use_reactive_flushing, false); session(settings.vsync_mode, VSyncMode::FifoRelaxed); session(settings.use_docked_mode, ConsoleMode::Handheld); + session(settings.scaling_filter, ScalingFilter::ScaleForce); + session(settings.anti_aliasing, AntiAliasing::Fxaa); } inline bool ApplyMarioKartWorldPreset(Values& settings, u64 program_id, bool accepted) { diff --git a/src/common/settings.h b/src/common/settings.h index f253deb64b..6669f98f4c 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -358,7 +358,7 @@ struct Values { true}; SwitchableSetting scaling_filter{linkage, - ScalingFilter::NearestNeighbor, + ScalingFilter::ScaleForce, "scaling_filter", Category::Renderer, Specialization::Default, @@ -387,7 +387,7 @@ struct Values { true}; SwitchableSetting anti_aliasing{linkage, - AntiAliasing::None, + AntiAliasing::Fxaa, "anti_aliasing", Category::Renderer, Specialization::Default, diff --git a/src/tests/common/game_presets.cpp b/src/tests/common/game_presets.cpp index c036895ab8..481f5c5e1d 100644 --- a/src/tests/common/game_presets.cpp +++ b/src/tests/common/game_presets.cpp @@ -18,6 +18,8 @@ void SetConflictingPreferences(Settings::Values& settings, bool per_game) { set(settings.vram_usage_mode, Settings::VramUsageMode::Aggressive); set(settings.use_reactive_flushing, true); set(settings.vsync_mode, Settings::VSyncMode::Immediate); + set(settings.scaling_filter, Settings::ScalingFilter::NearestNeighbor); + set(settings.anti_aliasing, Settings::AntiAliasing::Smaa); } void CheckPreset(const Settings::Values& settings) { @@ -30,6 +32,8 @@ void CheckPreset(const Settings::Values& settings) { CHECK_FALSE(settings.use_reactive_flushing.GetValue()); CHECK(settings.vsync_mode.GetValue() == Settings::VSyncMode::FifoRelaxed); CHECK(settings.use_docked_mode.GetValue() == Settings::ConsoleMode::Handheld); + CHECK(settings.scaling_filter.GetValue() == Settings::ScalingFilter::ScaleForce); + CHECK(settings.anti_aliasing.GetValue() == Settings::AntiAliasing::Fxaa); } void CheckPreferences(const Settings::Values& settings, bool global = false) { @@ -42,9 +46,17 @@ void CheckPreferences(const Settings::Values& settings, bool global = false) { CHECK(settings.vram_usage_mode.GetValue(global) == Settings::VramUsageMode::Aggressive); CHECK(settings.use_reactive_flushing.GetValue(global)); CHECK(settings.vsync_mode.GetValue(global) == Settings::VSyncMode::Immediate); + CHECK(settings.scaling_filter.GetValue(global) == Settings::ScalingFilter::NearestNeighbor); + CHECK(settings.anti_aliasing.GetValue(global) == Settings::AntiAliasing::Smaa); } } // namespace +TEST_CASE("Display filter defaults use ScaleForce and FXAA", "[game_presets]") { + auto settings = std::make_unique(); + CHECK(settings->scaling_filter.GetDefault() == Settings::ScalingFilter::ScaleForce); + CHECK(settings->anti_aliasing.GetDefault() == Settings::AntiAliasing::Fxaa); +} + TEST_CASE("Accepted MKW settings replace visible global preferences", "[game_presets]") { auto settings = std::make_unique(); SetConflictingPreferences(*settings, false); diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index d0cd130f6f..91afcd56ae 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -462,7 +462,7 @@ MainWindow::MainWindow(bool has_broken_vulkan) QMessageBox::Question, tr("Recommended Mario Kart World settings"), tr("Use the recommended settings for Mario Kart World?\n\n" "Vulkan, 1x resolution, GPU Fast, asynchronous shaders, BC3, conservative VRAM, " - "reactive flushing off, FIFO Relaxed VSync, and handheld mode.\n\n" + "reactive flushing off, FIFO Relaxed VSync, handheld mode, ScaleForce, and FXAA.\n\n" "Yes replaces your saved settings. No or closing this window keeps your settings."), QMessageBox::Yes | QMessageBox::No, this); recommendations->setAttribute(Qt::WA_DeleteOnClose); -- cgit v1.2.3