mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-04-29 14:59:26 -04:00
68 lines
2.3 KiB
C++
68 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include <optional>
|
|
#include "config/CemuConfig.h"
|
|
|
|
struct gameProfileIntegerOption_t
|
|
{
|
|
bool isPresent = false;
|
|
sint32 value;
|
|
};
|
|
|
|
class GameProfile
|
|
{
|
|
friend class GameProfileWindow;
|
|
|
|
public:
|
|
static const uint32 kThreadQuantumDefault = 45000;
|
|
|
|
bool Load(uint64_t title_id);
|
|
void Save(uint64_t title_id);
|
|
void ResetOptional();
|
|
void Reset();
|
|
|
|
[[nodiscard]] uint64 GetTitleId() const { return m_title_id; }
|
|
[[nodiscard]] bool IsLoaded() const { return m_is_loaded; }
|
|
[[nodiscard]] bool IsDefaultProfile() const { return m_is_default; }
|
|
[[nodiscard]] const std::optional<std::string>& GetGameName() const { return m_gameName; }
|
|
|
|
[[nodiscard]] const std::optional<bool>& ShouldLoadSharedLibraries() const { return m_loadSharedLibraries; }
|
|
[[nodiscard]] bool StartWithGamepadView() const { return m_startWithPadView; }
|
|
|
|
[[nodiscard]] const std::optional<GraphicAPI>& GetGraphicsAPI() const { return m_graphics_api; }
|
|
[[nodiscard]] const AccurateShaderMulOption& GetAccurateShaderMul() const { return m_accurateShaderMul; }
|
|
[[nodiscard]] const std::optional<PrecompiledShaderOption>& GetPrecompiledShadersState() const { return m_precompiledShaders; }
|
|
|
|
[[nodiscard]] uint32 GetThreadQuantum() const { return m_threadQuantum; }
|
|
[[nodiscard]] const std::optional<CPUMode>& GetCPUMode() const { return m_cpuMode; }
|
|
|
|
[[nodiscard]] bool IsAudioDisabled() const { return m_disableAudio; }
|
|
|
|
[[nodiscard]] const std::array< std::optional<std::string>, 8>& GetControllerProfile() const { return m_controllerProfile; }
|
|
|
|
private:
|
|
uint64_t m_title_id = 0;
|
|
bool m_is_loaded = false;
|
|
bool m_is_default = true;
|
|
|
|
std::optional<std::string> m_gameName{};
|
|
|
|
// general settings
|
|
std::optional<bool> m_loadSharedLibraries{}; // = true;
|
|
bool m_startWithPadView = false;
|
|
|
|
// graphic settings
|
|
std::optional<GraphicAPI> m_graphics_api{};
|
|
AccurateShaderMulOption m_accurateShaderMul = AccurateShaderMulOption::True;
|
|
std::optional<PrecompiledShaderOption> m_precompiledShaders{};
|
|
// cpu settings
|
|
uint32 m_threadQuantum = kThreadQuantumDefault; // values: 20000 45000 60000 80000 100000
|
|
std::optional<CPUMode> m_cpuMode{}; // = CPUModeOption::kSingleCoreRecompiler;
|
|
// audio
|
|
bool m_disableAudio = false;
|
|
// controller settings
|
|
std::array< std::optional<std::string>, 8> m_controllerProfile{};
|
|
};
|
|
extern std::unique_ptr<GameProfile> g_current_game_profile;
|
|
|
|
void gameProfile_load();
|