aboutsummaryrefslogtreecommitdiff
path: root/src/core/game_settings.h
diff options
context:
space:
mode:
authorKleidis <kleidis1@protonmail.com>2025-12-17 03:59:27 +0100
committercrueter <crueter@eden-emu.dev>2025-12-17 03:59:27 +0100
commitb9530ae80f9994f4a10143f8336f2b9bee4416fc (patch)
tree6d3da866cb878c7fda927ca68bb4d6467f6b76f6 /src/core/game_settings.h
parent5130185d122781a125f43602cfe521a905a5b1a0 (diff)
[core] Add overridable game setting functionality (#2963)
Adds a place to override specific game settings for specific vendors Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2963 Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Reviewed-by: Maufeat <sahyno1996@gmail.com> Co-authored-by: Kleidis <kleidis1@protonmail.com> Co-committed-by: Kleidis <kleidis1@protonmail.com>
Diffstat (limited to 'src/core/game_settings.h')
-rw-r--r--src/core/game_settings.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/core/game_settings.h b/src/core/game_settings.h
new file mode 100644
index 0000000000..327a1a4e2c
--- /dev/null
+++ b/src/core/game_settings.h
@@ -0,0 +1,60 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include <array>
+#include <cstdint>
+#include <string>
+
+namespace VideoCore { class RendererBase; }
+
+namespace Core::GameSettings {
+
+enum class OS {
+ Windows,
+ Linux,
+ MacOS,
+ IOS,
+ Android,
+ FireOS,
+ HarmonyOS,
+ FreeBSD,
+ DragonFlyBSD,
+ NetBSD,
+ OpenBSD,
+ HaikuOS,
+ AIX,
+ Managarm,
+ RedoxOS,
+ Solaris,
+ Unknown,
+};
+
+enum class GPUVendor {
+ Nvidia,
+ AMD,
+ Intel,
+ Apple,
+ Qualcomm,
+ ARM,
+ Imagination,
+ Microsoft,
+ Unknown,
+};
+
+enum class TitleID : std::uint64_t {
+ NinjaGaidenRagebound = 0x0100781020710000ULL
+};
+
+struct EnvironmentInfo {
+ OS os{OS::Unknown};
+ GPUVendor vendor{GPUVendor::Unknown};
+ std::string vendor_string; // raw string from driver
+};
+
+EnvironmentInfo DetectEnvironment(const VideoCore::RendererBase& renderer);
+
+void LoadOverrides(std::uint64_t program_id, const VideoCore::RendererBase& renderer);
+
+} // namespace Core::GameSettings