#include "stdafx.h"
#include "emu_settings_type.h"
#include "Emu/system_config.h"

const cfg_root local_cfg {}; // Local config to ensure we have an initialized object

cfg_location get_cfg_location(const cfg::_base& leaf)
{
	cfg_location loc {};
	loc.push_back(leaf.get_name());

	for (const cfg::_base* node = leaf.get_parent(); node && !node->get_name().empty(); node = node->get_parent())
	{
		loc.push_front(node->get_name());
	}

	return loc;
}

const std::map<emu_settings_type, cfg_location> settings_location =
{
	// Core Tab
	{ emu_settings_type::PPUDecoder,                 get_cfg_location(local_cfg.core.ppu_decoder) },
	{ emu_settings_type::SPUDecoder,                 get_cfg_location(local_cfg.core.spu_decoder) },
	{ emu_settings_type::HookStaticFuncs,            get_cfg_location(local_cfg.core.hook_functions) },
	{ emu_settings_type::ThreadSchedulerMode,        get_cfg_location(local_cfg.core.thread_scheduler) },
	{ emu_settings_type::SPULoopDetection,           get_cfg_location(local_cfg.core.spu_loop_detection) },
	{ emu_settings_type::PreferredSPUThreads,        get_cfg_location(local_cfg.core.preferred_spu_threads) },
	{ emu_settings_type::PPUDebug,                   get_cfg_location(local_cfg.core.ppu_debug) },
	{ emu_settings_type::SPUDebug,                   get_cfg_location(local_cfg.core.spu_debug) },
	{ emu_settings_type::MFCDebug,                   get_cfg_location(local_cfg.core.mfc_debug) },
	{ emu_settings_type::MaxLLVMThreads,             get_cfg_location(local_cfg.core.llvm_threads) },
	{ emu_settings_type::LLVMPrecompilation,         get_cfg_location(local_cfg.core.llvm_precompilation) },
	{ emu_settings_type::AccurateSpuDMA,             get_cfg_location(local_cfg.core.spu_accurate_dma) },
	{ emu_settings_type::AccurateClineStores,        get_cfg_location(local_cfg.core.accurate_cache_line_stores) },
	{ emu_settings_type::AccurateRSXAccess,          get_cfg_location(local_cfg.core.rsx_accurate_res_access) },
	{ emu_settings_type::FIFOAccuracy,               get_cfg_location(local_cfg.core.rsx_fifo_accuracy) },
	{ emu_settings_type::XFloatAccuracy,             get_cfg_location(local_cfg.core.spu_xfloat_accuracy) },
	{ emu_settings_type::MFCCommandsShuffling,       get_cfg_location(local_cfg.core.mfc_transfers_shuffling) },
	{ emu_settings_type::SetDAZandFTZ,               get_cfg_location(local_cfg.core.set_daz_and_ftz) },
	{ emu_settings_type::SPUBlockSize,               get_cfg_location(local_cfg.core.spu_block_size) },
	{ emu_settings_type::SPUCache,                   get_cfg_location(local_cfg.core.spu_cache) },
	{ emu_settings_type::DebugConsoleMode,           get_cfg_location(local_cfg.core.debug_console_mode) },
	{ emu_settings_type::MaxSPURSThreads,            get_cfg_location(local_cfg.core.max_spurs_threads) },
	{ emu_settings_type::SleepTimersAccuracy,        get_cfg_location(local_cfg.core.sleep_timers_accuracy) },
	{ emu_settings_type::ClocksScale,                get_cfg_location(local_cfg.core.clocks_scale) },
	{ emu_settings_type::AccuratePPU128Loop,         get_cfg_location(local_cfg.core.ppu_128_reservations_loop_max_length) },
	{ emu_settings_type::PerformanceReport,          get_cfg_location(local_cfg.core.perf_report) },
	{ emu_settings_type::NumPPUThreads,              get_cfg_location(local_cfg.core.ppu_threads) },
	{ emu_settings_type::PPUVNANFixup,               get_cfg_location(local_cfg.core.ppu_fix_vnan) },
	{ emu_settings_type::AccurateDFMA,               get_cfg_location(local_cfg.core.use_accurate_dfma) },
	{ emu_settings_type::AccuratePPUSAT,             get_cfg_location(local_cfg.core.ppu_set_sat_bit) },
	{ emu_settings_type::AccuratePPUNJ,              get_cfg_location(local_cfg.core.ppu_use_nj_bit) },
	{ emu_settings_type::AccuratePPUVNAN,            get_cfg_location(local_cfg.core.ppu_set_vnan) },
	{ emu_settings_type::AccuratePPUFPCC,            get_cfg_location(local_cfg.core.ppu_set_fpcc) },
	{ emu_settings_type::MaxPreemptCount,            get_cfg_location(local_cfg.core.max_cpu_preempt_count_per_frame) },
	{ emu_settings_type::SPUProfiler,                get_cfg_location(local_cfg.core.spu_prof) },
	{ emu_settings_type::DisableSpinOptimization,    get_cfg_location(local_cfg.core.spu_getllar_spin_optimization_disabled) },
	{ emu_settings_type::EnabledSPUEventsBusyLoop,   get_cfg_location(local_cfg.core.spu_reservation_busy_waiting_enabled) },
	{ emu_settings_type::PPUReservationPriorityOverSPUs, get_cfg_location(local_cfg.core.ppu_reservation_priority_over_spu) },

	// Graphics Tab
	{ emu_settings_type::Renderer,                   get_cfg_location(local_cfg.video.renderer) },
	{ emu_settings_type::Resolution,                 get_cfg_location(local_cfg.video.resolution) },
	{ emu_settings_type::AspectRatio,                get_cfg_location(local_cfg.video.aspect_ratio) },
	{ emu_settings_type::FrameLimit,                 get_cfg_location(local_cfg.video.frame_limit) },
	{ emu_settings_type::MSAA,                       get_cfg_location(local_cfg.video.antialiasing_level) },
	{ emu_settings_type::LogShaderPrograms,          get_cfg_location(local_cfg.video.log_programs) },
	{ emu_settings_type::WriteDepthBuffer,           get_cfg_location(local_cfg.video.write_depth_buffer) },
	{ emu_settings_type::WriteColorBuffers,          get_cfg_location(local_cfg.video.write_color_buffers) },
	{ emu_settings_type::ReadColorBuffers,           get_cfg_location(local_cfg.video.read_color_buffers) },
	{ emu_settings_type::ReadDepthBuffer,            get_cfg_location(local_cfg.video.read_depth_buffer) },
	{ emu_settings_type::HandleRSXTiledMemory,       get_cfg_location(local_cfg.video.handle_tiled_memory) },
	{ emu_settings_type::VSync,                      get_cfg_location(local_cfg.video.vsync) },
	{ emu_settings_type::DebugOutput,                get_cfg_location(local_cfg.video.debug_output) },
	{ emu_settings_type::DebugOverlay,               get_cfg_location(local_cfg.video.debug_overlay) },
	{ emu_settings_type::RenderdocCompatibility,     get_cfg_location(local_cfg.video.renderdoc_compatiblity) },
	{ emu_settings_type::GPUTextureScaling,          get_cfg_location(local_cfg.video.use_gpu_texture_scaling) },
	{ emu_settings_type::StretchToDisplayArea,       get_cfg_location(local_cfg.video.stretch_to_display_area) },
	{ emu_settings_type::ForceHighpZ,                get_cfg_location(local_cfg.video.force_high_precision_z_buffer) },
	{ emu_settings_type::StrictRenderingMode,        get_cfg_location(local_cfg.video.strict_rendering_mode) },
	{ emu_settings_type::FramebufferAliasingBias,    get_cfg_location(local_cfg.video.fb_aliasing_bias) },
	{ emu_settings_type::DisableVertexCache,         get_cfg_location(local_cfg.video.disable_vertex_cache) },
	{ emu_settings_type::DisableOcclusionQueries,    get_cfg_location(local_cfg.video.disable_zcull_queries) },
	{ emu_settings_type::DisableVideoOutput,         get_cfg_location(local_cfg.video.disable_video_output) },
	{ emu_settings_type::DisableFIFOReordering,      get_cfg_location(local_cfg.video.disable_FIFO_reordering) },
	{ emu_settings_type::EmulateDepthCompare,        get_cfg_location(local_cfg.video.emulate_depth_compare) },
	{ emu_settings_type::StereoRenderEnabled,        get_cfg_location(local_cfg.video.stereo_enabled) },
	{ emu_settings_type::StereoRenderMode,           get_cfg_location(local_cfg.video.stereo_render_mode) },
	{ emu_settings_type::ScreenSize,                 get_cfg_location(local_cfg.video.screen_size) },
	{ emu_settings_type::StrictTextureFlushing,      get_cfg_location(local_cfg.video.strict_texture_flushing) },
	{ emu_settings_type::ForceCPUBlitEmulation,      get_cfg_location(local_cfg.video.force_cpu_blit_processing) },
	{ emu_settings_type::DisableOnDiskShaderCache,   get_cfg_location(local_cfg.video.disable_on_disk_shader_cache) },
	{ emu_settings_type::DisableVulkanMemAllocator,  get_cfg_location(local_cfg.video.disable_vulkan_mem_allocator) },
	{ emu_settings_type::ShaderMode,                 get_cfg_location(local_cfg.video.shadermode) },
	{ emu_settings_type::ShaderCompilerNumThreads,   get_cfg_location(local_cfg.video.shader_compiler_threads_count) },
	{ emu_settings_type::ShaderPrecisionQuality,     get_cfg_location(local_cfg.video.shader_precision) },
	{ emu_settings_type::MultithreadedRSX,           get_cfg_location(local_cfg.video.multithreaded_rsx) },
	{ emu_settings_type::RelaxedZCULL,               get_cfg_location(local_cfg.video.relaxed_zcull_sync) },
	{ emu_settings_type::PreciseZCULL,               get_cfg_location(local_cfg.video.precise_zpass_count) },
	{ emu_settings_type::AnisotropicFilterOverride,  get_cfg_location(local_cfg.video.anisotropic_level_override) },
	{ emu_settings_type::TextureLodBias,             get_cfg_location(local_cfg.video.texture_lod_bias) },
	{ emu_settings_type::ResolutionScale,            get_cfg_location(local_cfg.video.resolution_scale_percent) },
	{ emu_settings_type::MinimumScalableDimension,   get_cfg_location(local_cfg.video.min_scalable_dimension) },
	{ emu_settings_type::VBlankRate,                 get_cfg_location(local_cfg.video.vblank_rate) },
	{ emu_settings_type::VBlankNTSCFixup,            get_cfg_location(local_cfg.video.vblank_ntsc) },
	{ emu_settings_type::DriverWakeUpDelay,          get_cfg_location(local_cfg.video.driver_wakeup_delay) },
	{ emu_settings_type::AllowHostGPULabels,         get_cfg_location(local_cfg.video.host_label_synchronization) },
	{ emu_settings_type::DisableMSLFastMath,         get_cfg_location(local_cfg.video.disable_msl_fast_math) },
	{ emu_settings_type::OutputScalingMode,          get_cfg_location(local_cfg.video.output_scaling) },
	{ emu_settings_type::ForceHwMSAAResolve,         get_cfg_location(local_cfg.video.force_hw_MSAA_resolve) },
	{ emu_settings_type::DisableAsyncHostMM,         get_cfg_location(local_cfg.video.disable_async_host_memory_manager) },
	{ emu_settings_type::RecordWithOverlays,         get_cfg_location(local_cfg.video.record_with_overlays) },
	{ emu_settings_type::DisableHWTexelRemapping,    get_cfg_location(local_cfg.video.disable_hardware_texel_remapping) },
	{ emu_settings_type::FsrSharpeningStrength,      get_cfg_location(local_cfg.video.rcas_sharpening_intensity) },

	// Vulkan
	{ emu_settings_type::VulkanAdapter,                    get_cfg_location(local_cfg.video.vk.adapter) },
	{ emu_settings_type::VulkanAsyncTextureUploads,        get_cfg_location(local_cfg.video.vk.asynchronous_texture_streaming) },
	{ emu_settings_type::VulkanAsyncSchedulerDriver,       get_cfg_location(local_cfg.video.vk.asynchronous_scheduler) },
	{ emu_settings_type::ExclusiveFullscreenMode,          get_cfg_location(local_cfg.video.vk.exclusive_fullscreen_mode) },
	{ emu_settings_type::UseReBAR,                         get_cfg_location(local_cfg.video.vk.use_rebar_upload_heap) },

	// Performance Overlay
	{ emu_settings_type::PerfOverlayEnabled,               get_cfg_location(local_cfg.video.perf_overlay.enabled) },
	{ emu_settings_type::PerfOverlayFramerateGraphEnabled, get_cfg_location(local_cfg.video.perf_overlay.framerate_graph_enabled) },
	{ emu_settings_type::PerfOverlayFrametimeGraphEnabled, get_cfg_location(local_cfg.video.perf_overlay.frametime_graph_enabled) },
	{ emu_settings_type::PerfOverlayFramerateDatapoints,   get_cfg_location(local_cfg.video.perf_overlay.framerate_datapoint_count) },
	{ emu_settings_type::PerfOverlayFrametimeDatapoints,   get_cfg_location(local_cfg.video.perf_overlay.frametime_datapoint_count) },
	{ emu_settings_type::PerfOverlayDetailLevel,           get_cfg_location(local_cfg.video.perf_overlay.level) },
	{ emu_settings_type::PerfOverlayFramerateDetailLevel,  get_cfg_location(local_cfg.video.perf_overlay.framerate_graph_detail_level) },
	{ emu_settings_type::PerfOverlayFrametimeDetailLevel,  get_cfg_location(local_cfg.video.perf_overlay.frametime_graph_detail_level) },
	{ emu_settings_type::PerfOverlayPosition,              get_cfg_location(local_cfg.video.perf_overlay.position) },
	{ emu_settings_type::PerfOverlayUpdateInterval,        get_cfg_location(local_cfg.video.perf_overlay.update_interval) },
	{ emu_settings_type::PerfOverlayFontSize,              get_cfg_location(local_cfg.video.perf_overlay.font_size) },
	{ emu_settings_type::PerfOverlayOpacity,               get_cfg_location(local_cfg.video.perf_overlay.opacity) },
	{ emu_settings_type::PerfOverlayMarginX,               get_cfg_location(local_cfg.video.perf_overlay.margin_x) },
	{ emu_settings_type::PerfOverlayMarginY,               get_cfg_location(local_cfg.video.perf_overlay.margin_y) },
	{ emu_settings_type::PerfOverlayCenterX,               get_cfg_location(local_cfg.video.perf_overlay.center_x) },
	{ emu_settings_type::PerfOverlayCenterY,               get_cfg_location(local_cfg.video.perf_overlay.center_y) },
	{ emu_settings_type::PerfOverlayUseWindowSpace,        get_cfg_location(local_cfg.video.perf_overlay.use_window_space) },

	// Shader Loading Dialog
	{ emu_settings_type::ShaderLoadBgEnabled,     get_cfg_location(local_cfg.video.shader_preloading_dialog.use_custom_background) },
	{ emu_settings_type::ShaderLoadBgDarkening,   get_cfg_location(local_cfg.video.shader_preloading_dialog.darkening_strength) },
	{ emu_settings_type::ShaderLoadBgBlur,        get_cfg_location(local_cfg.video.shader_preloading_dialog.blur_strength) },

	// Anaglyph matrix
	{ emu_settings_type::CustomAnaglyphMatrixLeft,   get_cfg_location(local_cfg.video.custom_anaglyph_matrices.left) },
	{ emu_settings_type::CustomAnaglyphMatrixRight,  get_cfg_location(local_cfg.video.custom_anaglyph_matrices.right) },

	// Audio
	{ emu_settings_type::AudioRenderer,           get_cfg_location(local_cfg.audio.renderer) },
	{ emu_settings_type::DumpToFile,              get_cfg_location(local_cfg.audio.dump_to_file) },
	{ emu_settings_type::ConvertTo16Bit,          get_cfg_location(local_cfg.audio.convert_to_s16) },
	{ emu_settings_type::AudioFormat,             get_cfg_location(local_cfg.audio.format) },
	{ emu_settings_type::AudioFormats,            get_cfg_location(local_cfg.audio.formats) },
	{ emu_settings_type::AudioProvider,           get_cfg_location(local_cfg.audio.provider) },
	{ emu_settings_type::AudioAvport,             get_cfg_location(local_cfg.audio.rsxaudio_port) },
	{ emu_settings_type::AudioDevice,             get_cfg_location(local_cfg.audio.audio_device) },
	{ emu_settings_type::AudioChannelLayout,      get_cfg_location(local_cfg.audio.channel_layout) },
	{ emu_settings_type::MasterVolume,            get_cfg_location(local_cfg.audio.volume) },
	{ emu_settings_type::EnableBuffering,         get_cfg_location(local_cfg.audio.enable_buffering) },
	{ emu_settings_type::AudioBufferDuration,     get_cfg_location(local_cfg.audio.desired_buffer_duration) },
	{ emu_settings_type::EnableTimeStretching,    get_cfg_location(local_cfg.audio.enable_time_stretching) },
	{ emu_settings_type::TimeStretchingThreshold, get_cfg_location(local_cfg.audio.time_stretching_threshold) },
	{ emu_settings_type::MicrophoneType,          get_cfg_location(local_cfg.audio.microphone_type) },
	{ emu_settings_type::MicrophoneDevices,       get_cfg_location(local_cfg.audio.microphone_devices) },
	{ emu_settings_type::MusicHandler,            get_cfg_location(local_cfg.audio.music) },

	// Input / Output
	{ emu_settings_type::BackgroundInput,         get_cfg_location(local_cfg.io.background_input_enabled) },
	{ emu_settings_type::ShowMoveCursor,          get_cfg_location(local_cfg.io.show_move_cursor) },
	{ emu_settings_type::LockOvlIptToP1,          get_cfg_location(local_cfg.io.lock_overlay_input_to_player_one) },
	{ emu_settings_type::PadHandlerMode,          get_cfg_location(local_cfg.io.pad_mode) },
	{ emu_settings_type::PadConnection,           get_cfg_location(local_cfg.io.keep_pads_connected) },
	{ emu_settings_type::KeyboardHandler,         get_cfg_location(local_cfg.io.keyboard) },
	{ emu_settings_type::MouseHandler,            get_cfg_location(local_cfg.io.mouse) },
	{ emu_settings_type::Camera,                  get_cfg_location(local_cfg.io.camera) },
	{ emu_settings_type::CameraType,              get_cfg_location(local_cfg.io.camera_type) },
	{ emu_settings_type::CameraFlip,              get_cfg_location(local_cfg.io.camera_flip_option) },
	{ emu_settings_type::CameraID,                get_cfg_location(local_cfg.io.camera_id) },
	{ emu_settings_type::Move,                    get_cfg_location(local_cfg.io.move) },
	{ emu_settings_type::Buzz,                    get_cfg_location(local_cfg.io.buzz) },
	{ emu_settings_type::Turntable,               get_cfg_location(local_cfg.io.turntable) },
	{ emu_settings_type::GHLtar,                  get_cfg_location(local_cfg.io.ghltar) },
	{ emu_settings_type::MidiDevices,             get_cfg_location(local_cfg.io.midi_devices) },
	{ emu_settings_type::SDLMappings,             get_cfg_location(local_cfg.io.load_sdl_mappings) },
	{ emu_settings_type::MouseBasedGyro,          get_cfg_location(local_cfg.io.mouse_based_gyro_enabled) },
	{ emu_settings_type::IoDebugOverlay,          get_cfg_location(local_cfg.io.pad_debug_overlay) },
	{ emu_settings_type::MouseDebugOverlay,       get_cfg_location(local_cfg.io.mouse_debug_overlay) },

	// Misc
	{ emu_settings_type::ExitRPCS3OnFinish,               get_cfg_location(local_cfg.misc.autoexit) },
	{ emu_settings_type::StartOnBoot,                     get_cfg_location(local_cfg.misc.autostart) },
	{ emu_settings_type::PauseOnFocusLoss,                get_cfg_location(local_cfg.misc.autopause) },
	{ emu_settings_type::StartGameFullscreen,             get_cfg_location(local_cfg.misc.start_fullscreen) },
	{ emu_settings_type::PreventDisplaySleep,             get_cfg_location(local_cfg.misc.prevent_display_sleep) },
	{ emu_settings_type::ShowTrophyPopups,                get_cfg_location(local_cfg.misc.show_trophy_popups) },
	{ emu_settings_type::ShowRpcnPopups,                  get_cfg_location(local_cfg.misc.show_rpcn_popups) },
	{ emu_settings_type::UseNativeInterface,              get_cfg_location(local_cfg.misc.use_native_interface) },
	{ emu_settings_type::UseRecursiveScan,                get_cfg_location(local_cfg.misc.use_recursive_scan) },
	{ emu_settings_type::ShowShaderCompilationHint,       get_cfg_location(local_cfg.misc.show_shader_compilation_hint) },
	{ emu_settings_type::ShowPPUCompilationHint,          get_cfg_location(local_cfg.misc.show_ppu_compilation_hint) },
	{ emu_settings_type::ShowAutosaveAutoloadHint,        get_cfg_location(local_cfg.misc.show_autosave_autoload_hint) },
	{ emu_settings_type::ShowPressureIntensityToggleHint, get_cfg_location(local_cfg.misc.show_pressure_intensity_toggle_hint) },
	{ emu_settings_type::ShowAnalogLimiterToggleHint,     get_cfg_location(local_cfg.misc.show_analog_limiter_toggle_hint) },
	{ emu_settings_type::ShowMouseAndKeyboardToggleHint,  get_cfg_location(local_cfg.misc.show_mouse_and_keyboard_toggle_hint) },
	{ emu_settings_type::ShowFatalErrorHints,             get_cfg_location(local_cfg.misc.show_fatal_error_hints) },
	{ emu_settings_type::ShowCaptureHints,                get_cfg_location(local_cfg.misc.show_capture_hints) },
	{ emu_settings_type::SilenceAllLogs,                  get_cfg_location(local_cfg.misc.silence_all_logs) },
	{ emu_settings_type::WindowTitleFormat,               get_cfg_location(local_cfg.misc.title_format) },
	{ emu_settings_type::PauseDuringHomeMenu,             get_cfg_location(local_cfg.misc.pause_during_home_menu) },
	{ emu_settings_type::PlayMusicDuringBoot,             get_cfg_location(local_cfg.misc.play_music_during_boot) },
	{ emu_settings_type::EnableGamemode,                  get_cfg_location(local_cfg.misc.enable_gamemode) },

	// Networking
	{ emu_settings_type::InternetStatus, get_cfg_location(local_cfg.net.net_active) },
	{ emu_settings_type::DNSAddress,     get_cfg_location(local_cfg.net.dns) },
	{ emu_settings_type::IpSwapList,     get_cfg_location(local_cfg.net.swap_list) },
	{ emu_settings_type::PSNStatus,      get_cfg_location(local_cfg.net.psn_status) },
	{ emu_settings_type::BindAddress,    get_cfg_location(local_cfg.net.bind_address) },
	{ emu_settings_type::EnableUpnp,     get_cfg_location(local_cfg.net.upnp_enabled) },
	{ emu_settings_type::DeriveMacFromPsid, get_cfg_location(local_cfg.net.derive_mac_from_psid) },
	{ emu_settings_type::PSNCountry,     get_cfg_location(local_cfg.net.country) },
	{ emu_settings_type::EnableClans,    get_cfg_location(local_cfg.net.clans_enabled) },

	// System
	{ emu_settings_type::LicenseArea,           get_cfg_location(local_cfg.sys.license_area) },
	{ emu_settings_type::Language,              get_cfg_location(local_cfg.sys.language) },
	{ emu_settings_type::KeyboardType,          get_cfg_location(local_cfg.sys.keyboard_type) },
	{ emu_settings_type::EnterButtonAssignment, get_cfg_location(local_cfg.sys.enter_button_assignment) },
	{ emu_settings_type::DateFormat,            get_cfg_location(local_cfg.sys.date_fmt) },
	{ emu_settings_type::TimeFormat,            get_cfg_location(local_cfg.sys.time_fmt) },
	{ emu_settings_type::ConsoleTimeOffset,     get_cfg_location(local_cfg.sys.console_time_offset) },

	{ emu_settings_type::EnableHostRoot,        get_cfg_location(local_cfg.vfs.host_root) },
	{ emu_settings_type::EmptyHdd0Tmp,          get_cfg_location(local_cfg.vfs.empty_hdd0_tmp) },
	{ emu_settings_type::LimitCacheSize,        get_cfg_location(local_cfg.vfs.limit_cache_size) },
	{ emu_settings_type::MaximumCacheSize,      get_cfg_location(local_cfg.vfs.cache_max_size) },

	// Savestates
	{ emu_settings_type::SuspendEmulationSavestateMode,       get_cfg_location(local_cfg.savestate.suspend_emu) },
	{ emu_settings_type::CompatibleEmulationSavestateMode,    get_cfg_location(local_cfg.savestate.compatible_mode) },
	{ emu_settings_type::StartSavestatePaused,                get_cfg_location(local_cfg.savestate.start_paused) },

	// Logs
	{ emu_settings_type::Log, get_cfg_location(local_cfg.log)},
};
