2020-12-05 13:08:24 +01:00
# pragma once
2020-02-15 23:36:20 +01:00
# include "system_config_types.h"
# include "Utilities/Config.h"
enum CellNetCtlState : s32 ;
2020-10-30 20:54:49 +01:00
enum CellSysutilLicenseArea : s32 ;
2020-02-15 23:36:20 +01:00
enum CellSysutilLang : s32 ;
enum CellKbMappingType : s32 ;
struct cfg_root : cfg : : node
{
struct node_core : cfg : : node
{
2020-05-18 15:02:44 +02:00
private :
/** We don't wanna include the sysinfo header here */
2021-11-05 16:32:13 +01:00
static bool enable_tsx_by_default ( ) ;
2020-05-18 15:02:44 +02:00
public :
2020-02-15 23:36:20 +01:00
node_core ( cfg : : node * _this ) : cfg : : node ( _this , " Core " ) { }
cfg : : _enum < ppu_decoder_type > ppu_decoder { this , " PPU Decoder " , ppu_decoder_type : : llvm } ;
cfg : : _int < 1 , 8 > ppu_threads { this , " PPU Threads " , 2 } ; // Amount of PPU threads running simultaneously (must be 2)
cfg : : _bool ppu_debug { this , " PPU Debug " } ;
2021-07-10 11:56:48 +03:00
cfg : : _bool ppu_call_history { this , " PPU Calling History " } ; // Enable PPU calling history recording
2020-02-15 23:36:20 +01:00
cfg : : _bool llvm_logs { this , " Save LLVM logs " } ;
cfg : : string llvm_cpu { this , " Use LLVM CPU " } ;
2021-05-22 10:35:15 +03:00
cfg : : _int < 0 , 1024 > llvm_threads { this , " Max LLVM Compile Threads " , 0 } ;
2021-01-19 20:40:15 +03:00
cfg : : _bool ppu_llvm_greedy_mode { this , " PPU LLVM Greedy Mode " , false , false } ;
2021-04-10 14:43:50 +03:00
cfg : : _bool ppu_llvm_precompilation { this , " PPU LLVM Precompilation " , true } ;
2021-03-17 18:28:03 +02:00
cfg : : _enum < thread_scheduler_mode > thread_scheduler { this , " Thread Scheduler Mode " , thread_scheduler_mode : : os } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool set_daz_and_ftz { this , " Set DAZ and FTZ " , false } ;
cfg : : _enum < spu_decoder_type > spu_decoder { this , " SPU Decoder " , spu_decoder_type : : llvm } ;
2022-08-20 10:29:02 +03:00
cfg : : uint < 0 , 100 > spu_reservation_busy_waiting_percentage { this , " SPU Reservation Busy Waiting Percentage " , 0 , true } ;
2022-08-21 17:39:35 +03:00
cfg : : uint < 0 , 100 > spu_getllar_busy_waiting_percentage { this , " SPU GETLLAR Busy Waiting Percentage " , 100 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool spu_debug { this , " SPU Debug " } ;
2021-02-26 11:20:25 +02:00
cfg : : _bool mfc_debug { this , " MFC Debug " } ;
2020-02-15 23:36:20 +01:00
cfg : : _int < 0 , 6 > preferred_spu_threads { this , " Preferred SPU Threads " , 0 , true } ; // Number of hardware threads dedicated to heavy simultaneous spu tasks
cfg : : _int < 0 , 16 > spu_delay_penalty { this , " SPU delay penalty " , 3 } ; // Number of milliseconds to block a thread if a virtual 'core' isn't free
2021-09-25 21:48:12 +01:00
cfg : : _bool spu_loop_detection { this , " SPU loop detection " , false , true } ; // Try to detect wait loops and trigger thread yield
2020-02-15 23:36:20 +01:00
cfg : : _int < 0 , 6 > max_spurs_threads { this , " Max SPURS Threads " , 6 } ; // HACK. If less then 6, max number of running SPURS threads in each thread group.
cfg : : _enum < spu_block_size_type > spu_block_size { this , " SPU Block Size " , spu_block_size_type : : safe } ;
2020-09-04 10:23:46 +03:00
cfg : : _bool spu_accurate_getllar { this , " Accurate GETLLAR " , false , true } ;
2020-09-03 00:58:29 +03:00
cfg : : _bool spu_accurate_dma { this , " Accurate SPU DMA " , false } ;
2022-08-18 12:15:32 +03:00
cfg : : _bool spu_accurate_reservations { this , " Accurate SPU Reservations " , true } ;
2020-09-25 17:29:25 +03:00
cfg : : _bool accurate_cache_line_stores { this , " Accurate Cache Line Stores " , false } ;
2020-02-11 23:36:46 +02:00
cfg : : _bool rsx_accurate_res_access { this , " Accurate RSX reservation access " , false , true } ;
2022-06-04 15:35:06 +03:00
struct fifo_setting : public cfg : : _enum < rsx_fifo_mode >
{
using _enum = cfg : : _enum < rsx_fifo_mode > ;
using _enum : : _enum ;
explicit operator bool ( ) const
{
return get ( ) ! = rsx_fifo_mode : : fast ;
}
} ;
fifo_setting rsx_fifo_accuracy { this , " RSX FIFO Accuracy " , rsx_fifo_mode : : fast } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool spu_verification { this , " SPU Verification " , true } ; // Should be enabled
cfg : : _bool spu_cache { this , " SPU Cache " , true } ;
cfg : : _bool spu_prof { this , " SPU Profiler " , false } ;
2021-09-17 18:02:19 +03:00
cfg : : uint < 0 , 16 > mfc_transfers_shuffling { this , " MFC Commands Shuffling Limit " , 0 } ;
2021-09-17 18:12:48 +03:00
cfg : : uint < 0 , 10000 > mfc_transfers_timeout { this , " MFC Commands Timeout " , 0 , true } ;
cfg : : _bool mfc_shuffling_in_steps { this , " MFC Commands Shuffling In Steps " , false , true } ;
2021-11-05 16:32:13 +01:00
cfg : : _enum < tsx_usage > enable_TSX { this , " Enable TSX " , enable_tsx_by_default ( ) ? tsx_usage : : enabled : tsx_usage : : disabled } ; // Enable TSX. Forcing this on Haswell/Broadwell CPUs should be used carefully
2020-02-15 23:36:20 +01:00
cfg : : _bool spu_accurate_xfloat { this , " Accurate xfloat " , false } ;
cfg : : _bool spu_approx_xfloat { this , " Approximate xfloat " , true } ;
2022-01-29 13:22:09 -05:00
cfg : : _bool spu_relaxed_xfloat { this , " Relaxed xfloat " , true } ; // Approximate accuracy for only the "FCGT" and "FNMS" instructions
2020-04-07 20:29:11 +03:00
cfg : : _int < - 1 , 14 > ppu_128_reservations_loop_max_length { this , " Accurate PPU 128-byte Reservation Op Max Length " , 0 , true } ; // -1: Always accurate, 0: Never accurate, 1-14: max accurate loop length
2020-05-15 18:57:48 +03:00
cfg : : _int < - 64 , 64 > stub_ppu_traps { this , " Stub PPU Traps " , 0 , true } ; // Hack, skip PPU traps for rare cases where the trap is continueable (specify relative instructions to skip)
2021-12-30 19:39:18 +03:00
cfg : : _bool full_width_avx512 { this , " Full Width AVX-512 " , false } ;
2022-01-15 14:30:13 +03:00
cfg : : _bool ppu_llvm_nj_fixup { this , " PPU LLVM Java Mode Handling " , true } ; // Partially respect current Java Mode for alti-vec ops by PPU LLVM
2021-12-30 19:39:18 +03:00
cfg : : _bool use_accurate_dfma { this , " Use Accurate DFMA " , true } ; // Enable accurate double-precision FMA for CPUs which do not support it natively
cfg : : _bool ppu_set_sat_bit { this , " PPU Set Saturation Bit " , false } ; // Accuracy. If unset, completely disable saturation flag handling.
2022-01-16 01:16:46 +03:00
cfg : : _bool ppu_use_nj_bit { this , " PPU Accurate Non-Java Mode " , false } ; // Accuracy. If set, accurately emulate NJ flag. Implies NJ fixup.
2021-12-30 19:39:18 +03:00
cfg : : _bool ppu_fix_vnan { this , " PPU Fixup Vector NaN Values " , false } ; // Accuracy. Partial.
cfg : : _bool ppu_set_vnan { this , " PPU Accurate Vector NaN Values " , false } ; // Accuracy. Implies ppu_fix_vnan.
cfg : : _bool ppu_set_fpcc { this , " PPU Set FPCC Bits " , false } ; // Accuracy.
2020-02-15 23:36:20 +01:00
cfg : : _bool debug_console_mode { this , " Debug Console Mode " , false } ; // Debug console emulation, not recommended
cfg : : _bool hook_functions { this , " Hook static functions " } ;
2020-12-08 21:22:08 +02:00
cfg : : set_entry libraries_control { this , " Libraries Control " } ; // Override HLE/LLE behaviour of selected libs
2020-02-15 23:36:20 +01:00
cfg : : _bool hle_lwmutex { this , " HLE lwmutex " } ; // Force alternative lwmutex/lwcond implementation
2020-04-04 15:36:05 +03:00
cfg : : uint64 spu_llvm_lower_bound { this , " SPU LLVM Lower Bound " } ;
2020-04-06 19:25:57 +02:00
cfg : : uint64 spu_llvm_upper_bound { this , " SPU LLVM Upper Bound " , 0xffffffffffffffff } ;
2020-10-31 01:52:24 +03:00
cfg : : uint64 tx_limit1_ns { this , " TSX Transaction First Limit " , 800 } ; // In nanoseconds
cfg : : uint64 tx_limit2_ns { this , " TSX Transaction Second Limit " , 2000 } ; // In nanoseconds
2020-02-15 23:36:20 +01:00
2021-05-20 13:21:50 +03:00
cfg : : _int < 10 , 3000 > clocks_scale { this , " Clocks scale " , 100 } ; // Changing this from 100 (percentage) may affect game speed in unexpected ways
2020-06-23 16:41:16 +03:00
cfg : : uint < 0 , 3000 > spu_wakeup_delay { this , " SPU Wake-Up Delay " , 0 , true } ;
cfg : : uint < 0 , ( 1 < < 6 ) - 1 > spu_wakeup_delay_mask { this , " SPU Wake-Up Delay Thread Mask " , ( 1 < < 6 ) - 1 , true } ;
2023-02-13 02:33:06 -08:00
cfg : : uint < 0 , 400 > max_cpu_preempt_count_per_frame { this , " Max CPU Preempt Count " , 0 , true } ;
cfg : : _bool allow_rsx_cpu_preempt { this , " Allow RSX CPU Preemptions " , true , true } ;
2022-01-18 00:25:59 +01:00
# if defined (__linux__) || defined (__APPLE__)
cfg : : _enum < sleep_timers_accuracy_level > sleep_timers_accuracy { this , " Sleep Timers Accuracy " , sleep_timers_accuracy_level : : _as_host , true } ;
2020-02-15 23:36:20 +01:00
# else
2022-01-18 00:25:59 +01:00
cfg : : _enum < sleep_timers_accuracy_level > sleep_timers_accuracy { this , " Sleep Timers Accuracy " , sleep_timers_accuracy_level : : _usleep , true } ;
2020-02-15 23:36:20 +01:00
# endif
2020-10-18 15:00:10 +03:00
cfg : : uint64 perf_report_threshold { this , " Performance Report Threshold " , 500 , true } ; // In µs, 0.5ms = default, 0 = everything
cfg : : _bool perf_report { this , " Enable Performance Report " , false , true } ; // Show certain perf-related logs
2022-03-25 20:51:55 +03:00
cfg : : _bool external_debugger { this , " Assume External Debugger " } ;
2020-02-15 23:36:20 +01:00
} core { this } ;
struct node_vfs : cfg : : node
{
node_vfs ( cfg : : node * _this ) : cfg : : node ( _this , " VFS " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool host_root { this , " Enable /host_root/ " } ;
cfg : : _bool init_dirs { this , " Initialize Directories " , true } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool limit_cache_size { this , " Limit disk cache size " , false } ;
cfg : : _int < 0 , 10240 > cache_max_size { this , " Disk cache maximum size (MB) " , 5120 } ;
2022-01-07 19:16:03 +02:00
cfg : : _bool empty_hdd0_tmp { this , " Empty /dev_hdd0/tmp/ " , true } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
} vfs { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_video : cfg : : node
{
node_video ( cfg : : node * _this ) : cfg : : node ( _this , " Video " ) { }
2020-02-20 12:43:53 +03:00
2022-01-10 14:37:26 +01:00
# ifdef __APPLE__
cfg : : _enum < video_renderer > renderer { this , " Renderer " , video_renderer : : vulkan } ;
# else
2020-02-15 23:36:20 +01:00
cfg : : _enum < video_renderer > renderer { this , " Renderer " , video_renderer : : opengl } ;
2022-01-10 14:37:26 +01:00
# endif
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _enum < video_resolution > resolution { this , " Resolution " , video_resolution : : _720 } ;
cfg : : _enum < video_aspect > aspect_ratio { this , " Aspect ratio " , video_aspect : : _16_9 } ;
2021-01-30 13:18:20 +02:00
cfg : : _enum < frame_limit_type > frame_limit { this , " Frame limit " , frame_limit_type : : _auto , true } ;
2022-10-23 06:43:01 +03:00
cfg : : _float < 0 , 1000 > second_frame_limit { this , " Second Frame Limit " , 0 , true } ; // 0 disables its effect
2020-02-15 23:36:20 +01:00
cfg : : _enum < msaa_level > antialiasing_level { this , " MSAA " , msaa_level : : _auto } ;
2020-04-27 16:37:31 +02:00
cfg : : _enum < shader_mode > shadermode { this , " Shader Mode " , shader_mode : : async_recompiler } ;
2022-10-10 16:19:11 +03:00
cfg : : _enum < gpu_preset_level > shader_precision { this , " Shader Precision " , gpu_preset_level : : high } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool write_color_buffers { this , " Write Color Buffers " } ;
cfg : : _bool write_depth_buffer { this , " Write Depth Buffer " } ;
cfg : : _bool read_color_buffers { this , " Read Color Buffers " } ;
cfg : : _bool read_depth_buffer { this , " Read Depth Buffer " } ;
cfg : : _bool log_programs { this , " Log shader programs " } ;
cfg : : _bool vsync { this , " VSync " } ;
cfg : : _bool debug_output { this , " Debug output " } ;
2020-12-14 20:26:20 +03:00
cfg : : _bool overlay { this , " Debug overlay " , false , true } ;
2021-04-27 23:13:43 +03:00
cfg : : _bool renderdoc_compatiblity { this , " Renderdoc Compatibility Mode " } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool use_gpu_texture_scaling { this , " Use GPU texture scaling " , false } ;
2020-03-08 00:11:35 +02:00
cfg : : _bool stretch_to_display_area { this , " Stretch To Display Area " , false , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool force_high_precision_z_buffer { this , " Force High Precision Z buffer " } ;
cfg : : _bool strict_rendering_mode { this , " Strict Rendering Mode " } ;
2020-05-15 16:02:54 +03:00
cfg : : _bool disable_zcull_queries { this , " Disable ZCull Occlusion Queries " , false , true } ;
2022-06-12 14:43:16 +03:00
cfg : : _bool disable_video_output { this , " Disable Video Output " , false , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool disable_vertex_cache { this , " Disable Vertex Cache " , false } ;
cfg : : _bool disable_FIFO_reordering { this , " Disable FIFO Reordering " , false } ;
2020-04-14 19:13:52 +02:00
cfg : : _bool frame_skip_enabled { this , " Enable Frame Skip " , false , true } ;
2020-03-07 18:15:46 +02:00
cfg : : _bool force_cpu_blit_processing { this , " Force CPU Blit " , false , true } ; // Debugging option
2020-02-15 23:36:20 +01:00
cfg : : _bool disable_on_disk_shader_cache { this , " Disable On-Disk Shader Cache " , false } ;
cfg : : _bool disable_vulkan_mem_allocator { this , " Disable Vulkan Memory Allocator " , false } ;
2020-04-14 19:13:52 +02:00
cfg : : _bool full_rgb_range_output { this , " Use full RGB output range " , true , true } ; // Video out dynamic range
2020-02-15 23:36:20 +01:00
cfg : : _bool strict_texture_flushing { this , " Strict Texture Flushing " , false } ;
cfg : : _bool multithreaded_rsx { this , " Multithreaded RSX " , false } ;
cfg : : _bool relaxed_zcull_sync { this , " Relaxed ZCULL Sync " , false } ;
2020-01-07 19:07:09 +03:00
cfg : : _bool enable_3d { this , " Enable 3D " , false } ;
2020-05-08 00:22:12 +03:00
cfg : : _bool debug_program_analyser { this , " Debug Program Analyser " , false } ;
2021-09-05 18:02:29 +03:00
cfg : : _bool precise_zpass_count { this , " Accurate ZCULL stats " , true } ;
2020-04-14 19:13:52 +02:00
cfg : : _int < 1 , 8 > consecutive_frames_to_draw { this , " Consecutive Frames To Draw " , 1 , true } ;
cfg : : _int < 1 , 8 > consecutive_frames_to_skip { this , " Consecutive Frames To Skip " , 1 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _int < 50 , 800 > resolution_scale_percent { this , " Resolution Scale " , 100 } ;
2020-12-24 16:56:37 +02:00
cfg : : uint < 0 , 16 > anisotropic_level_override { this , " Anisotropic Filter Override " , 0 , true } ;
2022-10-22 21:16:46 +03:00
cfg : : _float < - 32 , 32 > texture_lod_bias { this , " Texture LOD Bias Addend " , 0 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _int < 1 , 1024 > min_scalable_dimension { this , " Minimum Scalable Dimension " , 16 } ;
2020-10-27 23:41:20 +03:00
cfg : : _int < 0 , 16 > shader_compiler_threads_count { this , " Shader Compiler Threads " , 0 } ;
2020-02-15 23:36:20 +01:00
cfg : : _int < 0 , 30000000 > driver_recovery_timeout { this , " Driver Recovery Timeout " , 1000000 , true } ;
2020-06-23 16:41:16 +03:00
cfg : : uint < 0 , 16667 > driver_wakeup_delay { this , " Driver Wake-Up Delay " , 1 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _int < 1 , 1800 > vblank_rate { this , " Vblank Rate " , 60 , true } ; // Changing this from 60 may affect game speed in unexpected ways
2021-10-28 21:53:34 +03:00
cfg : : _bool vblank_ntsc { this , " Vblank NTSC Fixup " , false , true } ;
2020-04-04 15:36:05 +03:00
cfg : : _bool decr_memory_layout { this , " DECR memory layout " , false } ; // Force enable increased allowed main memory range as DECR console
2022-02-19 20:43:31 +03:00
cfg : : _bool host_label_synchronization { this , " Allow Host GPU Labels " , false } ;
2022-04-19 04:13:02 +02:00
cfg : : _bool disable_msl_fast_math { this , " Disable MSL Fast Math " , false } ;
2023-01-15 17:13:25 -05:00
cfg : : _enum < output_scaling_mode > output_scaling { this , " Output Scaling Mode " , output_scaling_mode : : bilinear } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_vk : cfg : : node
{
node_vk ( cfg : : node * _this ) : cfg : : node ( _this , " Vulkan " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : string adapter { this , " Adapter " } ;
cfg : : _bool force_fifo { this , " Force FIFO present mode " } ;
cfg : : _bool force_primitive_restart { this , " Force primitive restart flag " } ;
2022-11-12 13:00:45 +02:00
cfg : : _enum < vk_exclusive_fs_mode > exclusive_fullscreen_mode { this , " Exclusive Fullscreen Mode " , vk_exclusive_fs_mode : : unspecified } ;
2021-03-14 15:20:40 +03:00
cfg : : _bool asynchronous_texture_streaming { this , " Asynchronous Texture Streaming 2 " , false } ;
2021-08-04 03:04:48 +03:00
cfg : : uint < 0 , 100 > rcas_sharpening_intensity { this , " FidelityFX CAS Sharpening Intensity " , 50 , true } ;
2022-01-30 14:56:22 +03:00
cfg : : _enum < vk_gpu_scheduler_mode > asynchronous_scheduler { this , " Asynchronous Queue Scheduler " , vk_gpu_scheduler_mode : : safe } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
} vk { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_perf_overlay : cfg : : node
{
node_perf_overlay ( cfg : : node * _this ) : cfg : : node ( _this , " Performance Overlay " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool perf_overlay_enabled { this , " Enabled " , false , true } ;
cfg : : _bool framerate_graph_enabled { this , " Enable Framerate Graph " , false , true } ;
cfg : : _bool frametime_graph_enabled { this , " Enable Frametime Graph " , false , true } ;
2021-03-01 23:05:38 +01:00
cfg : : uint < 2 , 6000 > framerate_datapoint_count { this , " Framerate datapoints " , 50 , true } ;
cfg : : uint < 2 , 6000 > frametime_datapoint_count { this , " Frametime datapoints " , 170 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _enum < detail_level > level { this , " Detail level " , detail_level : : medium , true } ;
2021-05-19 21:14:49 +02:00
cfg : : _enum < perf_graph_detail_level > framerate_graph_detail_level { this , " Framerate graph detail level " , perf_graph_detail_level : : show_all , true } ;
cfg : : _enum < perf_graph_detail_level > frametime_graph_detail_level { this , " Frametime graph detail level " , perf_graph_detail_level : : show_all , true } ;
2021-05-22 21:36:45 +02:00
cfg : : uint < 1 , 1000 > update_interval { this , " Metrics update interval (ms) " , 350 , true } ;
2021-03-01 20:59:05 +01:00
cfg : : uint < 4 , 36 > font_size { this , " Font size (px) " , 10 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _enum < screen_quadrant > position { this , " Position " , screen_quadrant : : top_left , true } ;
cfg : : string font { this , " Font " , " n023055ms.ttf " , true } ;
2021-03-01 20:59:05 +01:00
cfg : : uint < 0 , 1280 > margin_x { this , " Horizontal Margin (px) " , 50 , true } ; // horizontal distance to the screen border relative to the screen_quadrant in px
cfg : : uint < 0 , 720 > margin_y { this , " Vertical Margin (px) " , 50 , true } ; // vertical distance to the screen border relative to the screen_quadrant in px
2020-02-15 23:36:20 +01:00
cfg : : _bool center_x { this , " Center Horizontally " , false , true } ;
cfg : : _bool center_y { this , " Center Vertically " , false , true } ;
2021-03-01 20:59:05 +01:00
cfg : : uint < 0 , 100 > opacity { this , " Opacity (%) " , 70 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : string color_body { this , " Body Color (hex) " , " #FFE138FF " , true } ;
cfg : : string background_body { this , " Body Background (hex) " , " #002339FF " , true } ;
cfg : : string color_title { this , " Title Color (hex) " , " #F26C24FF " , true } ;
cfg : : string background_title { this , " Title Background (hex) " , " #00000000 " , true } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
} perf_overlay { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_shader_preloading_dialog : cfg : : node
{
node_shader_preloading_dialog ( cfg : : node * _this ) : cfg : : node ( _this , " Shader Loading Dialog " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool use_custom_background { this , " Allow custom background " , true , true } ;
2021-04-13 02:11:17 +02:00
cfg : : uint < 0 , 100 > darkening_strength { this , " Darkening effect strength " , 30 , true } ;
cfg : : uint < 0 , 100 > blur_strength { this , " Blur effect strength " , 0 , true } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
} shader_preloading_dialog { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
} video { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_audio : cfg : : node
{
node_audio ( cfg : : node * _this ) : cfg : : node ( _this , " Audio " ) { }
2020-02-20 12:43:53 +03:00
2021-11-25 03:41:05 +09:00
cfg : : _enum < audio_renderer > renderer { this , " Renderer " , audio_renderer : : cubeb , true } ;
2022-05-05 22:47:44 +09:00
cfg : : _enum < audio_provider > provider { this , " Audio Provider " , audio_provider : : cell_audio , false } ;
cfg : : _enum < audio_avport > rsxaudio_port { this , " RSXAudio Avport " , audio_avport : : hdmi_0 , true } ;
2022-01-05 17:26:12 +09:00
cfg : : _bool dump_to_file { this , " Dump to file " , false , true } ;
2021-11-25 03:41:05 +09:00
cfg : : _bool convert_to_s16 { this , " Convert to 16 bit " , false , true } ;
2022-06-02 00:58:42 +02:00
cfg : : _enum < audio_format > format { this , " Audio Format " , audio_format : : stereo , false } ;
2023-02-22 21:09:11 +01:00
cfg : : uint < 0 , 0xFF > formats { this , " Audio Formats " , static_cast < u32 > ( audio_format_flag : : lpcm_2_48khz ) , false } ;
2022-07-09 00:13:38 +09:00
cfg : : string audio_device { this , " Audio Device " , " @@@default@@@ " , true } ;
2020-05-30 12:43:00 +02:00
cfg : : _int < 0 , 200 > volume { this , " Master Volume " , 100 , true } ;
2020-06-20 02:44:32 +02:00
cfg : : _bool enable_buffering { this , " Enable Buffering " , true , true } ;
cfg : : _int < 4 , 250 > desired_buffer_duration { this , " Desired Audio Buffer Duration " , 100 , true } ;
cfg : : _bool enable_time_stretching { this , " Enable Time Stretching " , false , true } ;
2022-10-18 18:57:25 +03:00
cfg : : _bool disable_sampling_skip { this , " Disable Sampling Skip " , false , true } ;
2020-06-20 02:44:32 +02:00
cfg : : _int < 0 , 100 > time_stretching_threshold { this , " Time Stretching Threshold " , 75 , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _enum < microphone_handler > microphone_type { this , " Microphone Type " , microphone_handler : : null } ;
2021-02-17 14:24:41 +01:00
cfg : : string microphone_devices { this , " Microphone Devices " , " @@@@@@@@@@@@ " } ;
2022-02-20 19:01:21 +01:00
cfg : : _enum < music_handler > music { this , " Music Handler " , music_handler : : qt } ;
2020-02-15 23:36:20 +01:00
} audio { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_io : cfg : : node
{
node_io ( cfg : : node * _this ) : cfg : : node ( _this , " Input/Output " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _enum < keyboard_handler > keyboard { this , " Keyboard " , keyboard_handler : : null } ;
cfg : : _enum < mouse_handler > mouse { this , " Mouse " , mouse_handler : : basic } ;
cfg : : _enum < camera_handler > camera { this , " Camera " , camera_handler : : null } ;
cfg : : _enum < fake_camera_type > camera_type { this , " Camera type " , fake_camera_type : : unknown } ;
2021-10-22 01:56:03 +02:00
cfg : : _enum < camera_flip > camera_flip_option { this , " Camera flip " , camera_flip : : none , true } ;
2021-10-21 01:47:59 +02:00
cfg : : string camera_id { this , " Camera ID " , " Default " , true } ;
2022-07-06 14:35:50 +02:00
cfg : : _enum < move_handler > move { this , " Move " , move_handler : : null , true } ;
2020-12-27 16:51:55 +02:00
cfg : : _enum < buzz_handler > buzz { this , " Buzz emulated controller " , buzz_handler : : null } ;
2021-10-12 14:29:19 -07:00
cfg : : _enum < turntable_handler > turntable { this , " Turntable emulated controller " , turntable_handler : : null } ;
2021-10-15 22:57:37 -07:00
cfg : : _enum < ghltar_handler > ghltar { this , " GHLtar emulated controller " , ghltar_handler : : null } ;
2022-01-28 00:09:11 +01:00
cfg : : _enum < pad_handler_mode > pad_mode { this , " Pad handler mode " , pad_handler_mode : : single_threaded , true } ;
cfg : : uint < 0 , 100 ' 000 > pad_sleep { this , " Pad handler sleep (microseconds) " , 1 ' 000 , true } ;
2022-07-05 21:47:05 +02:00
cfg : : _bool background_input_enabled { this , " Background input enabled " , true , true } ;
2022-07-06 22:08:50 +02:00
cfg : : _bool show_move_cursor { this , " Show move cursor " , false , true } ;
2020-02-15 23:36:20 +01:00
} io { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_sys : cfg : : node
{
node_sys ( cfg : : node * _this ) : cfg : : node ( _this , " System " ) { }
2020-02-20 12:43:53 +03:00
2020-10-30 20:54:49 +01:00
cfg : : _enum < CellSysutilLicenseArea > license_area { this , " License Area " , CellSysutilLicenseArea { 1 } } ; // CELL_SYSUTIL_LICENSE_AREA_A
2020-02-15 23:36:20 +01:00
cfg : : _enum < CellSysutilLang > language { this , " Language " , CellSysutilLang { 1 } } ; // CELL_SYSUTIL_LANG_ENGLISH_US
cfg : : _enum < CellKbMappingType > keyboard_type { this , " Keyboard Type " , CellKbMappingType { 0 } } ; // CELL_KB_MAPPING_101 = US
cfg : : _enum < enter_button_assign > enter_button_assignment { this , " Enter button assignment " , enter_button_assign : : cross } ;
2020-09-17 20:02:45 +10:00
cfg : : _int < - 60 * 60 * 24 * 365 * 100LL , 60 * 60 * 24 * 365 * 100LL > console_time_offset { this , " Console time offset (s) " , 0 } ; // console time offset, limited to +/-100years
2023-02-03 09:05:08 +08:00
cfg : : uint < 0 , umax > console_psid_high { this , " PSID high " } ;
cfg : : uint < 0 , umax > console_psid_low { this , " PSID low " } ;
2020-02-15 23:36:20 +01:00
} sys { this } ;
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
struct node_net : cfg : : node
{
node_net ( cfg : : node * _this ) : cfg : : node ( _this , " Net " ) { }
2020-02-20 12:43:53 +03:00
2020-03-04 14:55:35 +01:00
cfg : : _enum < np_internet_status > net_active { this , " Internet enabled " , np_internet_status : : disabled } ;
cfg : : string ip_address { this , " IP address " , " 0.0.0.0 " } ;
2022-11-30 10:35:42 -05:00
cfg : : string bind_address { this , " Bind address " , " 0.0.0.0 " } ;
2020-03-04 14:55:35 +01:00
cfg : : string dns { this , " DNS address " , " 8.8.8.8 " } ;
cfg : : string swap_list { this , " IP swap list " , " " } ;
2023-01-12 04:05:05 +01:00
cfg : : _bool upnp_enabled { this , " UPNP Enabled " , false } ;
2020-03-04 14:55:35 +01:00
cfg : : _enum < np_psn_status > psn_status { this , " PSN status " , np_psn_status : : disabled } ;
} net { this } ;
2020-04-04 15:36:05 +03:00
2022-07-04 16:02:17 +03:00
struct node_savestate : cfg : : node
{
node_savestate ( cfg : : node * _this ) : cfg : : node ( _this , " Savestate " ) { }
2022-11-04 19:15:53 +02:00
cfg : : _bool start_paused { this , " Start Paused " , false } ; // Pause on first frame
2022-10-23 08:13:25 +03:00
cfg : : _bool suspend_emu { this , " Suspend Emulation Savestate Mode " , false } ; // Close emulation when saving, delete save after loading
2022-07-04 16:02:17 +03:00
cfg : : _bool state_inspection_mode { this , " Inspection Mode Savestates " } ; // Save memory stored in executable files, thus allowing to view state without any files (for debugging)
cfg : : _bool save_disc_game_data { this , " Save Disc Game Data " , false } ;
} savestate { this } ;
2020-02-15 23:36:20 +01:00
struct node_misc : cfg : : node
{
node_misc ( cfg : : node * _this ) : cfg : : node ( _this , " Miscellaneous " ) { }
2020-02-20 12:43:53 +03:00
2020-02-15 23:36:20 +01:00
cfg : : _bool autostart { this , " Automatically start games after boot " , true , true } ;
cfg : : _bool autoexit { this , " Exit RPCS3 when process finishes " , false , true } ;
cfg : : _bool start_fullscreen { this , " Start games in fullscreen mode " , false , true } ;
2020-07-03 17:12:58 +02:00
cfg : : _bool prevent_display_sleep { this , " Prevent display sleep while running games " , true , true } ;
2020-02-15 23:36:20 +01:00
cfg : : _bool show_trophy_popups { this , " Show trophy popups " , true , true } ;
cfg : : _bool show_shader_compilation_hint { this , " Show shader compilation hint " , true , true } ;
cfg : : _bool use_native_interface { this , " Use native user interface " , true } ;
cfg : : string gdb_server { this , " GDB Server " , " 127.0.0.1:2345 " } ;
2020-03-28 15:28:23 +01:00
cfg : : _bool silence_all_logs { this , " Silence All Logs " , false , true } ;
2020-02-15 23:36:20 +01:00
cfg : : string title_format { this , " Window Title Format " , " FPS: %F | %R | %V | %T [%t] " , true } ;
2023-01-14 00:07:07 +01:00
cfg : : _bool pause_during_home_menu { this , " Pause Emulation During Home Menu " , false , false } ;
2020-04-04 15:36:05 +03:00
2020-02-15 23:36:20 +01:00
} misc { this } ;
2020-04-04 15:36:05 +03:00
2020-02-15 23:36:20 +01:00
cfg : : log_entry log { this , " Log " } ;
2020-04-04 15:36:05 +03:00
2021-04-03 19:38:02 +03:00
std : : string name { } ;
2020-02-15 23:36:20 +01:00
} ;
extern cfg_root g_cfg ;
2023-01-21 00:53:49 +01:00
extern cfg_root g_backup_cfg ;