// Copyright 2017 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "Common/Common.h" #include "Common/Config/Config.h" #include "DiscIO/Enums.h" // DSP Backend Types #define BACKEND_NULLSOUND _trans("No Audio Output") #define BACKEND_ALSA "ALSA" #define BACKEND_CUBEB "Cubeb" #define BACKEND_OPENAL "OpenAL" #define BACKEND_PULSEAUDIO "Pulse" #define BACKEND_OPENSLES "OpenSLES" #define BACKEND_WASAPI _trans("WASAPI (Exclusive Mode)") namespace PowerPC { enum class CPUCore; } namespace AudioCommon { enum class DPL2Quality; } namespace ExpansionInterface { enum class EXIDeviceType : int; enum class Slot : int; } // namespace ExpansionInterface namespace SerialInterface { enum SIDevices : int; } namespace Config { // Main.Core extern const Info MAIN_SKIP_IPL; extern const Info MAIN_CPU_CORE; extern const Info MAIN_JIT_FOLLOW_BRANCH; extern const Info MAIN_FASTMEM; // Should really be in the DSP section, but we're kind of stuck with bad decisions made in the past. extern const Info MAIN_DSP_HLE; extern const Info MAIN_TIMING_VARIANCE; extern const Info MAIN_CPU_THREAD; extern const Info MAIN_SYNC_ON_SKIP_IDLE; extern const Info MAIN_DEFAULT_ISO; extern const Info MAIN_ENABLE_CHEATS; extern const Info MAIN_GC_LANGUAGE; extern const Info MAIN_OVERRIDE_REGION_SETTINGS; extern const Info MAIN_DPL2_DECODER; extern const Info MAIN_DPL2_QUALITY; extern const Info MAIN_AUDIO_LATENCY; extern const Info MAIN_AUDIO_STRETCH; extern const Info MAIN_AUDIO_STRETCH_LATENCY; extern const Info MAIN_MEMCARD_A_PATH; extern const Info MAIN_MEMCARD_B_PATH; const Info& GetInfoForMemcardPath(ExpansionInterface::Slot slot); extern const Info MAIN_AGP_CART_A_PATH; extern const Info MAIN_AGP_CART_B_PATH; const Info& GetInfoForAGPCartPath(ExpansionInterface::Slot slot); extern const Info MAIN_GCI_FOLDER_A_PATH_OVERRIDE; extern const Info MAIN_GCI_FOLDER_B_PATH_OVERRIDE; const Info& GetInfoForGCIPathOverride(ExpansionInterface::Slot slot); extern const Info MAIN_MEMORY_CARD_SIZE; extern const Info MAIN_SLOT_A; extern const Info MAIN_SLOT_B; extern const Info MAIN_SERIAL_PORT_1; const Info& GetInfoForEXIDevice(ExpansionInterface::Slot slot); extern const Info MAIN_BBA_MAC; extern const Info MAIN_BBA_XLINK_IP; extern const Info MAIN_BBA_XLINK_CHAT_OSD; const Info& GetInfoForSIDevice(int channel); const Info& GetInfoForAdapterRumble(int channel); const Info& GetInfoForSimulateKonga(int channel); extern const Info MAIN_WII_SD_CARD; extern const Info MAIN_WII_KEYBOARD; extern const Info MAIN_WIIMOTE_CONTINUOUS_SCANNING; extern const Info MAIN_WIIMOTE_ENABLE_SPEAKER; extern const Info MAIN_CONNECT_WIIMOTES_FOR_CONTROLLER_INTERFACE; extern const Info MAIN_MMU; extern const Info MAIN_BB_DUMP_PORT; extern const Info MAIN_SYNC_GPU; extern const Info MAIN_SYNC_GPU_MAX_DISTANCE; extern const Info MAIN_SYNC_GPU_MIN_DISTANCE; extern const Info MAIN_SYNC_GPU_OVERCLOCK; extern const Info MAIN_FAST_DISC_SPEED; extern const Info MAIN_LOW_DCBZ_HACK; extern const Info MAIN_FLOAT_EXCEPTIONS; extern const Info MAIN_DIVIDE_BY_ZERO_EXCEPTIONS; extern const Info MAIN_FPRF; extern const Info MAIN_ACCURATE_NANS; extern const Info MAIN_DISABLE_ICACHE; extern const Info MAIN_EMULATION_SPEED; extern const Info MAIN_OVERCLOCK; extern const Info MAIN_OVERCLOCK_ENABLE; extern const Info MAIN_RAM_OVERRIDE_ENABLE; extern const Info MAIN_MEM1_SIZE; extern const Info MAIN_MEM2_SIZE; // Should really be part of System::GFX, but again, we're stuck with past mistakes. extern const Info MAIN_GFX_BACKEND; enum class GPUDeterminismMode { Auto, Disabled, // This is currently the only mode. There will probably be at least // one more at some point. FakeCompletion, }; extern const Info MAIN_GPU_DETERMINISM_MODE; GPUDeterminismMode GetGPUDeterminismMode(); extern const Info MAIN_PERF_MAP_DIR; extern const Info MAIN_CUSTOM_RTC_ENABLE; extern const Info MAIN_CUSTOM_RTC_VALUE; extern const Info MAIN_AUTO_DISC_CHANGE; extern const Info MAIN_ALLOW_SD_WRITES; extern const Info MAIN_ENABLE_SAVESTATES; extern const Info MAIN_FALLBACK_REGION; extern const Info MAIN_REAL_WII_REMOTE_REPEAT_REPORTS; extern const Info MAIN_OVERRIDE_BOOT_IOS; // Main.DSP extern const Info MAIN_DSP_THREAD; extern const Info MAIN_DSP_CAPTURE_LOG; extern const Info MAIN_DSP_JIT; extern const Info MAIN_DUMP_AUDIO; extern const Info MAIN_DUMP_AUDIO_SILENT; extern const Info MAIN_DUMP_UCODE; extern const Info MAIN_AUDIO_BACKEND; extern const Info MAIN_AUDIO_VOLUME; extern const Info MAIN_AUDIO_MUTED; #ifdef _WIN32 extern const Info MAIN_WASAPI_DEVICE; #endif bool ShouldUseDPL2Decoder(); // Main.Display extern const Info MAIN_FULLSCREEN_DISPLAY_RES; extern const Info MAIN_FULLSCREEN; extern const Info MAIN_RENDER_TO_MAIN; extern const Info MAIN_RENDER_WINDOW_XPOS; extern const Info MAIN_RENDER_WINDOW_YPOS; extern const Info MAIN_RENDER_WINDOW_WIDTH; extern const Info MAIN_RENDER_WINDOW_HEIGHT; extern const Info MAIN_RENDER_WINDOW_AUTOSIZE; extern const Info MAIN_KEEP_WINDOW_ON_TOP; extern const Info MAIN_DISABLE_SCREENSAVER; // Main.General extern const Info MAIN_DUMP_PATH; extern const Info MAIN_LOAD_PATH; extern const Info MAIN_RESOURCEPACK_PATH; extern const Info MAIN_FS_PATH; extern const Info MAIN_SD_PATH; extern const Info MAIN_WFS_PATH; extern const Info MAIN_SHOW_LAG; extern const Info MAIN_SHOW_FRAME_COUNT; extern const Info MAIN_WIRELESS_MAC; extern const Info MAIN_GDB_SOCKET; extern const Info MAIN_GDB_PORT; extern const Info MAIN_ISO_PATH_COUNT; std::vector GetIsoPaths(); void SetIsoPaths(const std::vector& paths); // Main.GBA #ifdef HAS_LIBMGBA extern const Info MAIN_GBA_BIOS_PATH; extern const std::array, 4> MAIN_GBA_ROM_PATHS; extern const Info MAIN_GBA_SAVES_PATH; extern const Info MAIN_GBA_SAVES_IN_ROM_PATH; extern const Info MAIN_GBA_THREADS; #endif // Main.Network extern const Info MAIN_NETWORK_SSL_DUMP_READ; extern const Info MAIN_NETWORK_SSL_DUMP_WRITE; extern const Info MAIN_NETWORK_SSL_VERIFY_CERTIFICATES; extern const Info MAIN_NETWORK_SSL_DUMP_ROOT_CA; extern const Info MAIN_NETWORK_SSL_DUMP_PEER_CERT; extern const Info MAIN_NETWORK_DUMP_AS_PCAP; extern const Info MAIN_NETWORK_TIMEOUT; // Main.Interface extern const Info MAIN_USE_HIGH_CONTRAST_TOOLTIPS; extern const Info MAIN_USE_PANIC_HANDLERS; extern const Info MAIN_ABORT_ON_PANIC_ALERT; extern const Info MAIN_OSD_MESSAGES; extern const Info MAIN_SKIP_NKIT_WARNING; extern const Info MAIN_CONFIRM_ON_STOP; enum class ShowCursor { Never, Constantly, OnMovement, }; extern const Info MAIN_SHOW_CURSOR; extern const Info MAIN_LOCK_CURSOR; extern const Info MAIN_INTERFACE_LANGUAGE; extern const Info MAIN_EXTENDED_FPS_INFO; extern const Info MAIN_SHOW_ACTIVE_TITLE; extern const Info MAIN_USE_BUILT_IN_TITLE_DATABASE; extern const Info MAIN_THEME_NAME; extern const Info MAIN_PAUSE_ON_FOCUS_LOST; extern const Info MAIN_ENABLE_DEBUGGING; // Main.Analytics extern const Info MAIN_ANALYTICS_ID; extern const Info MAIN_ANALYTICS_ENABLED; extern const Info MAIN_ANALYTICS_PERMISSION_ASKED; // Main.GameList extern const Info MAIN_GAMELIST_LIST_DRIVES; extern const Info MAIN_GAMELIST_LIST_WAD; extern const Info MAIN_GAMELIST_LIST_ELF_DOL; extern const Info MAIN_GAMELIST_LIST_WII; extern const Info MAIN_GAMELIST_LIST_GC; extern const Info MAIN_GAMELIST_LIST_JPN; extern const Info MAIN_GAMELIST_LIST_PAL; extern const Info MAIN_GAMELIST_LIST_USA; extern const Info MAIN_GAMELIST_LIST_AUSTRALIA; extern const Info MAIN_GAMELIST_LIST_FRANCE; extern const Info MAIN_GAMELIST_LIST_GERMANY; extern const Info MAIN_GAMELIST_LIST_ITALY; extern const Info MAIN_GAMELIST_LIST_KOREA; extern const Info MAIN_GAMELIST_LIST_NETHERLANDS; extern const Info MAIN_GAMELIST_LIST_RUSSIA; extern const Info MAIN_GAMELIST_LIST_SPAIN; extern const Info MAIN_GAMELIST_LIST_TAIWAN; extern const Info MAIN_GAMELIST_LIST_WORLD; extern const Info MAIN_GAMELIST_LIST_UNKNOWN; extern const Info MAIN_GAMELIST_LIST_SORT; extern const Info MAIN_GAMELIST_LIST_SORT_SECONDARY; extern const Info MAIN_GAMELIST_COLUMN_PLATFORM; extern const Info MAIN_GAMELIST_COLUMN_DESCRIPTION; extern const Info MAIN_GAMELIST_COLUMN_BANNER; extern const Info MAIN_GAMELIST_COLUMN_TITLE; extern const Info MAIN_GAMELIST_COLUMN_MAKER; extern const Info MAIN_GAMELIST_COLUMN_FILE_NAME; extern const Info MAIN_GAMELIST_COLUMN_FILE_PATH; extern const Info MAIN_GAMELIST_COLUMN_GAME_ID; extern const Info MAIN_GAMELIST_COLUMN_REGION; extern const Info MAIN_GAMELIST_COLUMN_FILE_SIZE; extern const Info MAIN_GAMELIST_COLUMN_FILE_FORMAT; extern const Info MAIN_GAMELIST_COLUMN_BLOCK_SIZE; extern const Info MAIN_GAMELIST_COLUMN_COMPRESSION; extern const Info MAIN_GAMELIST_COLUMN_TAGS; // Main.FifoPlayer extern const Info MAIN_FIFOPLAYER_LOOP_REPLAY; extern const Info MAIN_FIFOPLAYER_EARLY_MEMORY_UPDATES; // Main.AutoUpdate extern const Info MAIN_AUTOUPDATE_UPDATE_TRACK; extern const Info MAIN_AUTOUPDATE_HASH_OVERRIDE; // Main.Movie extern const Info MAIN_MOVIE_PAUSE_MOVIE; extern const Info MAIN_MOVIE_MOVIE_AUTHOR; extern const Info MAIN_MOVIE_DUMP_FRAMES; extern const Info MAIN_MOVIE_DUMP_FRAMES_SILENT; extern const Info MAIN_MOVIE_SHOW_INPUT_DISPLAY; extern const Info MAIN_MOVIE_SHOW_RTC; extern const Info MAIN_MOVIE_SHOW_RERECORD; // Main.Input extern const Info MAIN_INPUT_BACKGROUND_INPUT; // Main.Debug extern const Info MAIN_DEBUG_JIT_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_LXZ_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_LWZ_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_LBZX_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_FLOATING_OFF; extern const Info MAIN_DEBUG_JIT_LOAD_STORE_PAIRED_OFF; extern const Info MAIN_DEBUG_JIT_FLOATING_POINT_OFF; extern const Info MAIN_DEBUG_JIT_INTEGER_OFF; extern const Info MAIN_DEBUG_JIT_PAIRED_OFF; extern const Info MAIN_DEBUG_JIT_SYSTEM_REGISTERS_OFF; extern const Info MAIN_DEBUG_JIT_BRANCH_OFF; extern const Info MAIN_DEBUG_JIT_REGISTER_CACHE_OFF; // Main.BluetoothPassthrough extern const Info MAIN_BLUETOOTH_PASSTHROUGH_ENABLED; extern const Info MAIN_BLUETOOTH_PASSTHROUGH_VID; extern const Info MAIN_BLUETOOTH_PASSTHROUGH_PID; extern const Info MAIN_BLUETOOTH_PASSTHROUGH_LINK_KEYS; // Main.USBPassthrough extern const Info MAIN_USB_PASSTHROUGH_DEVICES; std::set> GetUSBDeviceWhitelist(); void SetUSBDeviceWhitelist(const std::set>& devices); } // namespace Config