mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 02:47:02 +02:00
820856b301
* pad: send DualSense speaker and haptic audio over Bluetooth * ci: fix Opus clang-cl build and macOS memory tracker test * docs: remove Bluetooth notes from project README * pad: keep Bluetooth audio work off emulation timing path * pad: smooth DualSense speaker audio on USB and Bluetooth * tests: find available macOS guest range for page manager * pad: keep haptic waveform when Bluetooth queue overflows * audio: reject zero output sample frequency * Simplify DualSense audio routing and fix Bluetooth batching * controller: add global DualSense volume and vibration controls * Simplify global controller settings --------- Co-authored-by: Codex <codex@openai.com> Co-authored-by: nmzik <Nmzik@mail.ru>
134 lines
4.6 KiB
C++
134 lines
4.6 KiB
C++
#ifndef KYTY_COMMON_EMULATOR_CONFIG_H_
|
|
#define KYTY_COMMON_EMULATOR_CONFIG_H_
|
|
|
|
#include "common/common.h"
|
|
|
|
#include <cstddef>
|
|
#include <array>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace Config {
|
|
|
|
void Initialize();
|
|
void Shutdown();
|
|
|
|
struct Lifecycle {
|
|
static constexpr const char* name = "Config";
|
|
static constexpr auto initialize = Config::Initialize;
|
|
static constexpr auto shutdown = Config::Shutdown;
|
|
};
|
|
|
|
enum class ShaderOptimizationType { None, Size, Performance };
|
|
|
|
enum class LogDirection { Silent, Console, File };
|
|
|
|
enum class PresentMode { Fifo, Mailbox, Immediate };
|
|
|
|
using Keymap = std::vector<std::string>;
|
|
using ControllerColor = std::array<uint8_t, 3>;
|
|
|
|
constexpr uint32_t DEFAULT_CONSOLE_LANGUAGE = 1;
|
|
constexpr uint32_t MAX_CONSOLE_LANGUAGE = 29;
|
|
constexpr std::size_t MAX_USER_NAME_LENGTH = 16;
|
|
constexpr int32_t DEFAULT_USER_ID = 1000;
|
|
|
|
constexpr bool IsConfiguredUserIdValid(int32_t user_id) {
|
|
constexpr int32_t USER_ID_EVERYONE = 0xfe;
|
|
constexpr int32_t USER_ID_SYSTEM = 0xff;
|
|
return user_id >= 0 && user_id != USER_ID_EVERYONE && user_id != USER_ID_SYSTEM;
|
|
}
|
|
|
|
struct ConfigOptions {
|
|
uint32_t screen_width = 1280;
|
|
uint32_t screen_height = 720;
|
|
std::string user_name = "Kyty";
|
|
int32_t user_id = DEFAULT_USER_ID;
|
|
std::string audio_input_device;
|
|
std::optional<ControllerColor> controller_color;
|
|
uint32_t controller_speaker_volume = 100;
|
|
uint32_t controller_vibration_intensity = 100;
|
|
PresentMode present_mode = PresentMode::Mailbox;
|
|
int32_t gpu_index = -1;
|
|
bool fullscreen_enabled = false;
|
|
bool vr_enabled = false;
|
|
bool amd_cpu_enabled = false;
|
|
uint32_t vblank_frequency = 60;
|
|
uint32_t console_language = DEFAULT_CONSOLE_LANGUAGE;
|
|
bool vulkan_validation_enabled = false;
|
|
bool shader_validation_enabled = false;
|
|
ShaderOptimizationType shader_optimization_type = ShaderOptimizationType::None;
|
|
LogDirection shader_log_direction = LogDirection::Silent;
|
|
std::filesystem::path shader_log_folder = "_Shaders";
|
|
bool command_buffer_dump_enabled = false;
|
|
std::filesystem::path command_buffer_dump_folder = "_Buffers";
|
|
bool graphics_debug_dump_enabled = false;
|
|
LogDirection printf_direction = LogDirection::Silent;
|
|
std::filesystem::path printf_output_file = "_kyty.txt";
|
|
bool profiler_enabled = false;
|
|
bool spirv_debug_printf_enabled = false;
|
|
bool gpu_assisted_validation_enabled = false;
|
|
bool renderdoc_enabled = false;
|
|
bool readback_linear_images = false;
|
|
bool tessellation_enabled = false;
|
|
bool playgo_hack_enabled = false;
|
|
#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS
|
|
bool red_zone_protection_enabled = false;
|
|
#endif
|
|
Keymap keymap;
|
|
};
|
|
|
|
void Load(const ConfigOptions& cfg);
|
|
|
|
uint32_t GetScreenWidth();
|
|
uint32_t GetScreenHeight();
|
|
const std::string& GetUserName();
|
|
int32_t GetUserId();
|
|
const std::string& GetAudioInputDevice();
|
|
const std::optional<ControllerColor>& GetControllerColor();
|
|
uint32_t GetControllerSpeakerVolume();
|
|
uint32_t GetControllerVibrationIntensity();
|
|
PresentMode GetPresentMode();
|
|
int32_t GetGpuIndex();
|
|
bool FullscreenEnabled();
|
|
bool VrEnabled();
|
|
bool AmdCpuEnabled();
|
|
uint32_t GetVblankFrequency();
|
|
uint32_t GetConsoleLanguage();
|
|
bool VulkanValidationEnabled();
|
|
|
|
bool ShaderValidationEnabled();
|
|
ShaderOptimizationType GetShaderOptimizationType();
|
|
LogDirection GetShaderLogDirection();
|
|
std::filesystem::path GetShaderLogFolder();
|
|
|
|
bool CommandBufferDumpEnabled();
|
|
std::filesystem::path GetCommandBufferDumpFolder();
|
|
|
|
bool GraphicsDebugDumpEnabled();
|
|
|
|
LogDirection GetPrintfDirection();
|
|
std::filesystem::path GetPrintfOutputFile();
|
|
|
|
bool ProfilerEnabled();
|
|
|
|
bool SpirvDebugPrintfEnabled();
|
|
|
|
bool GpuAssistedValidationEnabled();
|
|
|
|
bool RenderDocEnabled();
|
|
bool ReadbackLinearImagesEnabled();
|
|
bool TessellationEnabled();
|
|
bool PlayGoHackEnabled();
|
|
#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS
|
|
bool RedZoneProtectionEnabled();
|
|
#endif
|
|
|
|
const Keymap& GetKeymap();
|
|
|
|
} // namespace Config
|
|
|
|
#endif /* KYTY_COMMON_EMULATOR_CONFIG_H_ */
|