aboutsummaryrefslogtreecommitdiff
path: root/src/common/game_presets.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/game_presets.h')
-rw-r--r--src/common/game_presets.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/common/game_presets.h b/src/common/game_presets.h
new file mode 100644
index 0000000000..83dd4d3c3f
--- /dev/null
+++ b/src/common/game_presets.h
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "common/settings.h"
+
+namespace Settings {
+
+inline constexpr u64 MarioKartWorldProgramId = 0x0400C3F00006E000ULL;
+
+inline void SetMarioKartWorldRecommendedSettings(Values& settings, bool global) {
+ const auto session = [global](auto& setting, auto value) {
+ setting.SetGlobal(global);
+ setting.SetValue(value);
+ };
+ session(settings.renderer_backend, RendererBackend::Vulkan);
+ session(settings.resolution_setup, ResolutionSetup::Res1X);
+ session(settings.gpu_accuracy, GpuAccuracy::Low);
+ session(settings.use_asynchronous_shaders, true);
+ session(settings.astc_recompression, AstcRecompression::Bc3);
+ session(settings.vram_usage_mode, VramUsageMode::Conservative);
+ 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) {
+ if (!accepted || program_id != MarioKartWorldProgramId) {
+ return false;
+ }
+ SetMarioKartWorldRecommendedSettings(settings, false);
+ return true;
+}
+
+} // namespace Settings