mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-29 23:41:19 -06:00
-Update style frame getters to take the frame explicitly: --sceFontStyleFrameGetResolutionDpi(OrbisFontStyleFrame*, u32* h_dpi, u32* v_dpi) --sceFontStyleFrameGetScalePixel(OrbisFontStyleFrame*, float* w, float* h) --sceFontStyleFrameGetScalePoint(OrbisFontStyleFrame*, float* w, float* h) -Ensure setters operate directly on the passed style frame (signatures unified): --sceFontStyleFrameSetEffectSlant(OrbisFontStyleFrame*, float slantRatio) --sceFontStyleFrameSetEffectWeight(OrbisFontStyleFrame*, float weightXScale, float weightYScale, u32 mode) --sceFontStyleFrameSetResolutionDpi(OrbisFontStyleFrame*, u32 h_dpi, u32 v_dpi) --sceFontStyleFrameSetScalePixel(OrbisFontStyleFrame*, float w, float h) --sceFontStyleFrameSetScalePoint(OrbisFontStyleFrame*, float w, float h) -Remove/streamline unused declarations from font.h to tighten the interface -Call sites using style frame getters must pass an OrbisFontStyleFrame* now Config: define system fonts path and default filename overrides -Add [General].sysFontPath to set the base directory for system fonts -Add [SystemFonts]: --fallback = "SST-Roman.otf" (lowercase key) for the default face when no set is requested --Per-font overrides using lowerCamelCase keys (start with fontSet...), e.g.: ---fontSetSstStdJapaneseJpArBold = "SSTJpPro-Bold.otf" --Override values are filenames resolved under sysFontPath (paths are rejected and logged) -Back-compat: still accept legacy SysFontPath and Fallback if present -Logging: emit errors when sysFontPath is missing/invalid, fallback missing, or an override includes a path -Configs should switch to sysFontPath and [SystemFonts].fallback with override keys
195 lines
7.9 KiB
C++
195 lines
7.9 KiB
C++
// SPDX-FileCopyrightText: Copyright 2025 shadPS4 Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <string_view>
|
|
#include <vector>
|
|
#include "types.h"
|
|
|
|
namespace Config {
|
|
|
|
enum class ConfigMode {
|
|
Default,
|
|
Global,
|
|
Clean,
|
|
};
|
|
void setConfigMode(ConfigMode mode);
|
|
|
|
struct GameInstallDir {
|
|
std::filesystem::path path;
|
|
bool enabled;
|
|
};
|
|
|
|
enum HideCursorState : int { Never, Idle, Always };
|
|
|
|
void load(const std::filesystem::path& path, bool is_game_specific = false);
|
|
void save(const std::filesystem::path& path, bool is_game_specific = false);
|
|
void resetGameSpecificValue(std::string entry);
|
|
|
|
bool getGameRunning();
|
|
void setGameRunning(bool running);
|
|
int getVolumeSlider();
|
|
void setVolumeSlider(int volumeValue, bool is_game_specific = false);
|
|
std::string getTrophyKey();
|
|
void setTrophyKey(std::string key);
|
|
bool getIsFullscreen();
|
|
void setIsFullscreen(bool enable, bool is_game_specific = false);
|
|
std::string getFullscreenMode();
|
|
void setFullscreenMode(std::string mode, bool is_game_specific = false);
|
|
std::string getPresentMode();
|
|
void setPresentMode(std::string mode, bool is_game_specific = false);
|
|
u32 getWindowWidth();
|
|
u32 getWindowHeight();
|
|
void setWindowWidth(u32 width, bool is_game_specific = false);
|
|
void setWindowHeight(u32 height, bool is_game_specific = false);
|
|
u32 getInternalScreenWidth();
|
|
u32 getInternalScreenHeight();
|
|
void setInternalScreenWidth(u32 width);
|
|
void setInternalScreenHeight(u32 height);
|
|
bool debugDump();
|
|
void setDebugDump(bool enable, bool is_game_specific = false);
|
|
s32 getGpuId();
|
|
void setGpuId(s32 selectedGpuId, bool is_game_specific = false);
|
|
bool allowHDR();
|
|
void setAllowHDR(bool enable, bool is_game_specific = false);
|
|
bool collectShadersForDebug();
|
|
void setCollectShaderForDebug(bool enable, bool is_game_specific = false);
|
|
bool showSplash();
|
|
void setShowSplash(bool enable, bool is_game_specific = false);
|
|
std::string sideTrophy();
|
|
void setSideTrophy(std::string side, bool is_game_specific = false);
|
|
bool nullGpu();
|
|
void setNullGpu(bool enable, bool is_game_specific = false);
|
|
bool copyGPUCmdBuffers();
|
|
void setCopyGPUCmdBuffers(bool enable, bool is_game_specific = false);
|
|
bool readbacks();
|
|
void setReadbacks(bool enable, bool is_game_specific = false);
|
|
bool readbackLinearImages();
|
|
void setReadbackLinearImages(bool enable, bool is_game_specific = false);
|
|
bool directMemoryAccess();
|
|
void setDirectMemoryAccess(bool enable, bool is_game_specific = false);
|
|
bool dumpShaders();
|
|
void setDumpShaders(bool enable, bool is_game_specific = false);
|
|
u32 vblankFreq();
|
|
void setVblankFreq(u32 value, bool is_game_specific = false);
|
|
bool getisTrophyPopupDisabled();
|
|
void setisTrophyPopupDisabled(bool disable, bool is_game_specific = false);
|
|
s16 getCursorState();
|
|
void setCursorState(s16 cursorState, bool is_game_specific = false);
|
|
bool vkValidationEnabled();
|
|
void setVkValidation(bool enable, bool is_game_specific = false);
|
|
bool vkValidationSyncEnabled();
|
|
void setVkSyncValidation(bool enable, bool is_game_specific = false);
|
|
bool vkValidationGpuEnabled();
|
|
void setVkGpuValidation(bool enable, bool is_game_specific = false);
|
|
bool vkValidationCoreEnabled();
|
|
void setVkCoreValidation(bool enable, bool is_game_specific = false);
|
|
bool getVkCrashDiagnosticEnabled();
|
|
void setVkCrashDiagnosticEnabled(bool enable, bool is_game_specific = false);
|
|
bool getVkHostMarkersEnabled();
|
|
void setVkHostMarkersEnabled(bool enable, bool is_game_specific = false);
|
|
bool getVkGuestMarkersEnabled();
|
|
void setVkGuestMarkersEnabled(bool enable, bool is_game_specific = false);
|
|
bool getEnableDiscordRPC();
|
|
void setEnableDiscordRPC(bool enable);
|
|
bool isRdocEnabled();
|
|
void setRdocEnabled(bool enable, bool is_game_specific = false);
|
|
std::string getLogType();
|
|
void setLogType(const std::string& type, bool is_game_specific = false);
|
|
std::string getLogFilter();
|
|
void setLogFilter(const std::string& type, bool is_game_specific = false);
|
|
double getTrophyNotificationDuration();
|
|
void setTrophyNotificationDuration(double newTrophyNotificationDuration,
|
|
bool is_game_specific = false);
|
|
int getCursorHideTimeout();
|
|
std::string getMainOutputDevice();
|
|
void setMainOutputDevice(std::string device, bool is_game_specific = false);
|
|
std::string getPadSpkOutputDevice();
|
|
void setPadSpkOutputDevice(std::string device, bool is_game_specific = false);
|
|
std::string getMicDevice();
|
|
void setCursorHideTimeout(int newcursorHideTimeout, bool is_game_specific = false);
|
|
void setMicDevice(std::string device, bool is_game_specific = false);
|
|
void setSeparateLogFilesEnabled(bool enabled, bool is_game_specific = false);
|
|
bool getSeparateLogFilesEnabled();
|
|
u32 GetLanguage();
|
|
void setLanguage(u32 language, bool is_game_specific = false);
|
|
void setUseSpecialPad(bool use);
|
|
bool getUseSpecialPad();
|
|
void setSpecialPadClass(int type);
|
|
int getSpecialPadClass();
|
|
bool getPSNSignedIn();
|
|
void setPSNSignedIn(bool sign, bool is_game_specific = false);
|
|
bool patchShaders(); // no set
|
|
bool fpsColor(); // no set
|
|
bool isNeoModeConsole();
|
|
void setNeoMode(bool enable, bool is_game_specific = false);
|
|
bool isDevKitConsole();
|
|
void setDevKitConsole(bool enable, bool is_game_specific = false);
|
|
|
|
int getExtraDmemInMbytes();
|
|
void setExtraDmemInMbytes(int value, bool is_game_specific = false);
|
|
bool getIsMotionControlsEnabled();
|
|
void setIsMotionControlsEnabled(bool use, bool is_game_specific = false);
|
|
std::string getDefaultControllerID();
|
|
void setDefaultControllerID(std::string id);
|
|
bool getBackgroundControllerInput();
|
|
void setBackgroundControllerInput(bool enable, bool is_game_specific = false);
|
|
bool getLoggingEnabled();
|
|
void setLoggingEnabled(bool enable, bool is_game_specific = false);
|
|
bool getFsrEnabled();
|
|
void setFsrEnabled(bool enable, bool is_game_specific = false);
|
|
bool getRcasEnabled();
|
|
void setRcasEnabled(bool enable, bool is_game_specific = false);
|
|
int getRcasAttenuation();
|
|
void setRcasAttenuation(int value, bool is_game_specific = false);
|
|
bool getIsConnectedToNetwork();
|
|
void setConnectedToNetwork(bool enable, bool is_game_specific = false);
|
|
void setUserName(const std::string& name, bool is_game_specific = false);
|
|
std::filesystem::path getSysModulesPath();
|
|
void setSysModulesPath(const std::filesystem::path& path);
|
|
std::filesystem::path getSysFontPath();
|
|
void setSysFontPath(const std::filesystem::path& path);
|
|
std::optional<std::filesystem::path> getSystemFontOverride(std::string_view key);
|
|
std::string getSystemFontFallbackName();
|
|
void setSystemFontFallbackName(const std::string& name);
|
|
void setSystemFontOverride(std::string_view key, const std::filesystem::path& path);
|
|
void clearSystemFontOverrides();
|
|
bool getLoadAutoPatches();
|
|
void setLoadAutoPatches(bool enable);
|
|
|
|
enum UsbBackendType : int { Real, SkylandersPortal, InfinityBase, DimensionsToypad };
|
|
int getUsbDeviceBackend();
|
|
void setUsbDeviceBackend(int value, bool is_game_specific = false);
|
|
|
|
// TODO
|
|
std::filesystem::path GetSaveDataPath();
|
|
std::string getUserName();
|
|
bool GetUseUnifiedInputConfig();
|
|
void SetUseUnifiedInputConfig(bool use);
|
|
bool GetOverrideControllerColor();
|
|
void SetOverrideControllerColor(bool enable);
|
|
int* GetControllerCustomColor();
|
|
void SetControllerCustomColor(int r, int b, int g);
|
|
void setGameInstallDirs(const std::vector<std::filesystem::path>& dirs_config);
|
|
void setAllGameInstallDirs(const std::vector<GameInstallDir>& dirs_config);
|
|
void setSaveDataPath(const std::filesystem::path& path);
|
|
// Gui
|
|
bool addGameInstallDir(const std::filesystem::path& dir, bool enabled = true);
|
|
void removeGameInstallDir(const std::filesystem::path& dir);
|
|
void setGameInstallDirEnabled(const std::filesystem::path& dir, bool enabled);
|
|
void setAddonInstallDir(const std::filesystem::path& dir);
|
|
|
|
const std::vector<std::filesystem::path> getGameInstallDirs();
|
|
const std::vector<bool> getGameInstallDirsEnabled();
|
|
std::filesystem::path getAddonInstallDir();
|
|
|
|
void setDefaultValues(bool is_game_specific = false);
|
|
|
|
constexpr std::string_view GetDefaultGlobalConfig();
|
|
std::filesystem::path GetFoolproofInputConfigFile(const std::string& game_id = "");
|
|
|
|
}; // namespace Config
|