mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-05-07 13:37:46 +00:00
Merge branch 'master' into feature/iso-multigame-support
This commit is contained in:
commit
4b85a56f07
16 changed files with 329 additions and 287 deletions
|
|
@ -31,21 +31,18 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
|||
|
||||
# Download translations
|
||||
mkdir -p "rpcs3.app/Contents/translations"
|
||||
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
|
||||
| grep "browser_download_url" \
|
||||
| grep "RPCS3-languages.zip" \
|
||||
| cut -d '"' -f 4)
|
||||
if [ -z "$ZIP_URL" ]; then
|
||||
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
|
||||
else
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
curl -L -o translations.zip "$ZIP_URL" || {
|
||||
echo "Failed to download translations.zip. Continuing without translations."
|
||||
exit 0
|
||||
}
|
||||
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
|
||||
ZIP_URL="https://github.com/RPCS3/rpcs3_translations/releases/latest/download/RPCS3-languages.zip"
|
||||
echo "Downloading translations from: $ZIP_URL"
|
||||
if curl -fsSL "$ZIP_URL" -o "translations.zip"; then
|
||||
echo "Successfully downloaded translations."
|
||||
if unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1; then
|
||||
rm -f translations.zip
|
||||
else
|
||||
echo "Failed to extract translations.zip. Continuing without translations."
|
||||
rm -f translations.zip
|
||||
rm -f translations.zip
|
||||
fi
|
||||
else
|
||||
echo "Warning: Failed to download translations. Skipping..."
|
||||
fi
|
||||
|
||||
# Copy Qt translations manually
|
||||
|
|
|
|||
|
|
@ -2161,7 +2161,7 @@ public:
|
|||
{
|
||||
auto value = m_ir->CreateLoad(get_type<f32>(), spu_ptr(&spu_thread::last_getllar_lsa));
|
||||
auto mod_val = m_ir->CreateFDiv(value, llvm::ConstantFP::get(value->getType(), 1.1 + i));
|
||||
m_ir->CreateStore(value, spu_ptr(&spu_thread::last_getllar_lsa));
|
||||
m_ir->CreateStore(mod_val, spu_ptr(&spu_thread::last_getllar_lsa));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2285,7 +2285,6 @@ public:
|
|||
|
||||
BasicBlock* block_optimization_phi_parent = nullptr;
|
||||
const auto block_optimization_inner = is_reduced_loop ? BasicBlock::Create(m_context, fmt::format("b-loop-it-0x%x", m_pos), m_function) : nullptr;
|
||||
const auto block_optimization_exit_early = is_reduced_loop ? BasicBlock::Create(m_context, fmt::format("b-loop-exit-0x%x", m_pos), m_function) : nullptr;
|
||||
const auto block_optimization_next = is_reduced_loop ? BasicBlock::Create(m_context, fmt::format("b2-0x%x", m_pos), m_function) : nullptr;
|
||||
|
||||
std::array<llvm::PHINode*, s_reg_max> reduced_loop_phi_nodes{};
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@ namespace rsx
|
|||
home_menu_settings_performance_overlay::home_menu_settings_performance_overlay(s16 x, s16 y, u16 width, u16 height, bool use_separators, home_menu_page* parent)
|
||||
: home_menu_settings_page(x, y, width, height, use_separators, parent, get_localized_string(localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY))
|
||||
{
|
||||
add_checkbox(&g_cfg.video.perf_overlay.perf_overlay_enabled, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_ENABLE);
|
||||
add_checkbox(&g_cfg.video.perf_overlay.enabled, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_ENABLE);
|
||||
add_checkbox(&g_cfg.video.perf_overlay.framerate_graph_enabled, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_ENABLE_FRAMERATE_GRAPH);
|
||||
add_checkbox(&g_cfg.video.perf_overlay.frametime_graph_enabled, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_ENABLE_FRAMETIME_GRAPH);
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ namespace rsx
|
|||
add_float_slider(&g_cfg.video.perf_overlay.margin_y, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_MARGIN_Y, " %", 0.25f);
|
||||
add_unsigned_slider(&g_cfg.video.perf_overlay.font_size, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_FONT_SIZE, " px", 1);
|
||||
add_unsigned_slider(&g_cfg.video.perf_overlay.opacity, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_OPACITY, " %", 1);
|
||||
add_checkbox(&g_cfg.video.perf_overlay.perf_overlay_use_window_space, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_USE_WINDOW_SPACE);
|
||||
add_checkbox(&g_cfg.video.perf_overlay.use_window_space, localized_string_id::HOME_MENU_SETTINGS_PERFORMANCE_OVERLAY_USE_WINDOW_SPACE);
|
||||
|
||||
apply_layout();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -934,7 +934,7 @@ namespace rsx
|
|||
auto& perf_settings = g_cfg.video.perf_overlay;
|
||||
auto perf_overlay = manager->get<rsx::overlays::perf_metrics_overlay>();
|
||||
|
||||
if (perf_settings.perf_overlay_enabled)
|
||||
if (perf_settings.enabled)
|
||||
{
|
||||
if (!perf_overlay)
|
||||
{
|
||||
|
|
@ -949,7 +949,7 @@ namespace rsx
|
|||
perf_overlay->set_font(perf_settings.font);
|
||||
perf_overlay->set_font_size(perf_settings.font_size);
|
||||
perf_overlay->set_margins(static_cast<f32>(perf_settings.margin_x.get()), static_cast<f32>(perf_settings.margin_y.get()), perf_settings.center_x.get(), perf_settings.center_y.get());
|
||||
perf_overlay->use_window_space = perf_settings.perf_overlay_use_window_space.get();
|
||||
perf_overlay->use_window_space = perf_settings.use_window_space.get();
|
||||
perf_overlay->set_opacity(perf_settings.opacity / 100.f);
|
||||
perf_overlay->set_body_colors(perf_settings.color_body, perf_settings.background_body);
|
||||
perf_overlay->set_title_colors(perf_settings.color_title, perf_settings.background_title);
|
||||
|
|
|
|||
|
|
@ -3414,7 +3414,7 @@ namespace rsx
|
|||
current_display_buffer = buffer;
|
||||
m_queued_flip.emu_flip = true;
|
||||
m_queued_flip.in_progress = true;
|
||||
m_queued_flip.skip_frame |= g_cfg.video.disable_video_output && !g_cfg.video.perf_overlay.perf_overlay_enabled;
|
||||
m_queued_flip.skip_frame |= g_cfg.video.disable_video_output && !g_cfg.video.perf_overlay.enabled;
|
||||
|
||||
flip(m_queued_flip);
|
||||
|
||||
|
|
|
|||
|
|
@ -4213,54 +4213,62 @@ u32 Emulator::AddGamesFromDir(const std::string& path)
|
|||
|
||||
m_games_config.set_save_on_dirty(false);
|
||||
|
||||
// search dropped path first or else the direct parent to an elf is wrongly skipped
|
||||
// search for a game on the provided path first (game on ISO file or on folder type)
|
||||
if (const game_boot_result error = AddGame(path); error == game_boot_result::no_errors)
|
||||
{
|
||||
games_added++;
|
||||
}
|
||||
|
||||
std::vector<fs::dir_entry> entries;
|
||||
|
||||
for (auto&& dir_entry : fs::dir(path))
|
||||
// search for games on subfolders only if not nested inside a discovered game folder
|
||||
if (games_added == 0)
|
||||
{
|
||||
// Prefetch entries, it is unsafe to keep fs::dir for a long time or for many operations
|
||||
entries.emplace_back(std::move(dir_entry));
|
||||
}
|
||||
std::vector<fs::dir_entry> entries;
|
||||
|
||||
auto path_it = entries.begin();
|
||||
|
||||
qt_events_aware_op(0, [&]()
|
||||
{
|
||||
// search direct subdirectories, that way we can drop one folder containing all games
|
||||
for (; path_it != entries.end(); ++path_it)
|
||||
for (auto&& dir_entry : fs::dir(path))
|
||||
{
|
||||
auto dir_entry = std::move(*path_it);
|
||||
|
||||
if (dir_entry.name == "." || dir_entry.name == "..")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const std::string dir_path = path + '/' + dir_entry.name;
|
||||
|
||||
if (!dir_entry.is_directory && !is_file_iso(dir_path))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (const game_boot_result error = AddGame(dir_path); error == game_boot_result::no_errors)
|
||||
{
|
||||
games_added++;
|
||||
}
|
||||
|
||||
// Process events
|
||||
++path_it;
|
||||
return false;
|
||||
// Prefetch entries, it is unsafe to keep fs::dir for a long time or for many operations
|
||||
entries.emplace_back(std::move(dir_entry));
|
||||
}
|
||||
|
||||
// Exit loop
|
||||
return true;
|
||||
});
|
||||
auto path_it = entries.begin();
|
||||
|
||||
qt_events_aware_op(0, [&]()
|
||||
{
|
||||
// search direct subdirectories, that way we can drop one folder containing all games
|
||||
for (; path_it != entries.end(); ++path_it)
|
||||
{
|
||||
auto dir_entry = std::move(*path_it);
|
||||
|
||||
if (dir_entry.name == "." || dir_entry.name == "..")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const std::string dir_path = path + '/' + dir_entry.name;
|
||||
|
||||
if (!dir_entry.is_directory && !is_file_iso(dir_path))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (const game_boot_result error = AddGame(dir_path); error == game_boot_result::no_errors)
|
||||
{
|
||||
games_added++;
|
||||
}
|
||||
else if (g_cfg.misc.use_recursive_scan)
|
||||
{
|
||||
games_added += AddGamesFromDir(dir_path);
|
||||
}
|
||||
|
||||
// Process events
|
||||
++path_it;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Exit loop
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
m_games_config.set_save_on_dirty(true);
|
||||
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ struct cfg_root : cfg::node
|
|||
{
|
||||
node_perf_overlay(cfg::node* _this) : cfg::node(_this, "Performance Overlay") {}
|
||||
|
||||
cfg::_bool perf_overlay_enabled{ this, "Enabled", false, true };
|
||||
cfg::_bool 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 };
|
||||
cfg::uint<2, 6000> framerate_datapoint_count{ this, "Framerate datapoints", 50, true };
|
||||
|
|
@ -219,7 +219,7 @@ struct cfg_root : cfg::node
|
|||
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 };
|
||||
cfg::_bool perf_overlay_use_window_space{this, "Use Window Space", false, true};
|
||||
cfg::_bool use_window_space{this, "Use Window Space", false, true};
|
||||
|
||||
} perf_overlay{ this };
|
||||
|
||||
|
|
@ -361,6 +361,7 @@ struct cfg_root : cfg::node
|
|||
cfg::_bool show_fatal_error_hints{ this, "Show fatal error hints", false, true };
|
||||
cfg::_bool show_capture_hints{ this, "Show capture hints", true, true };
|
||||
cfg::_bool use_native_interface{ this, "Use native user interface", true };
|
||||
cfg::_bool use_recursive_scan{this, "Use recursive scan", false};
|
||||
cfg::string gdb_server{ this, "GDB Server", "127.0.0.1:2345" };
|
||||
cfg::_bool silence_all_logs{ this, "Silence All Logs", false, true };
|
||||
cfg::string title_format{ this, "Window Title Format", "FPS: %F | %R | %V | %T [%t]", true };
|
||||
|
|
|
|||
|
|
@ -837,6 +837,7 @@
|
|||
<ClCompile Include="rpcs3qt\breakpoint_list.cpp" />
|
||||
<ClCompile Include="rpcs3qt\call_stack_list.cpp" />
|
||||
<ClCompile Include="rpcs3qt\camera_settings_dialog.cpp" />
|
||||
<ClCompile Include="rpcs3qt\emu_settings_type.cpp" />
|
||||
<ClCompile Include="rpcs3qt\gui_game_info.cpp" />
|
||||
<ClCompile Include="rpcs3qt\log_level_dialog.cpp" />
|
||||
<ClCompile Include="rpcs3qt\permissions.cpp" />
|
||||
|
|
|
|||
|
|
@ -1299,6 +1299,9 @@
|
|||
<ClCompile Include="rpcs3qt\steam_utils.cpp">
|
||||
<Filter>Gui\utils</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="rpcs3qt\emu_settings_type.cpp">
|
||||
<Filter>Gui\settings</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Input\ds4_pad_handler.h">
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ add_library(rpcs3_ui STATIC
|
|||
dimensions_dialog.cpp
|
||||
_discord_utils.cpp
|
||||
emu_settings.cpp
|
||||
emu_settings_type.cpp
|
||||
elf_memory_dumping_dialog.cpp
|
||||
emulated_pad_settings_dialog.cpp
|
||||
emulated_logitech_g27_settings_dialog.cpp
|
||||
|
|
|
|||
|
|
@ -1531,7 +1531,7 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_
|
|||
std::string type_string;
|
||||
if (const auto it = settings_location.find(type); it != settings_location.cend())
|
||||
{
|
||||
for (const char* loc : it->second)
|
||||
for (const std::string& loc : it->second)
|
||||
{
|
||||
if (!type_string.empty()) type_string += ": ";
|
||||
type_string += loc;
|
||||
|
|
|
|||
241
rpcs3/rpcs3qt/emu_settings_type.cpp
Normal file
241
rpcs3/rpcs3qt/emu_settings_type.cpp
Normal file
|
|
@ -0,0 +1,241 @@
|
|||
#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::PPUNJFixup, get_cfg_location(local_cfg.core.ppu_llvm_nj_fixup) },
|
||||
{ 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) },
|
||||
|
||||
// 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::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::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) },
|
||||
|
||||
// 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::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::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)},
|
||||
};
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include <deque>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// Node location
|
||||
using cfg_location = std::vector<const char*>;
|
||||
using cfg_location = std::deque<std::string>;
|
||||
|
||||
enum class emu_settings_type
|
||||
{
|
||||
|
|
@ -40,7 +41,6 @@ enum class emu_settings_type
|
|||
SleepTimersAccuracy,
|
||||
ClocksScale,
|
||||
PerformanceReport,
|
||||
FullWidthAVX512,
|
||||
PPUNJFixup,
|
||||
PPUVNANFixup,
|
||||
AccurateDFMA,
|
||||
|
|
@ -184,6 +184,7 @@ enum class emu_settings_type
|
|||
ShowTrophyPopups,
|
||||
ShowRpcnPopups,
|
||||
UseNativeInterface,
|
||||
UseRecursiveScan,
|
||||
ShowShaderCompilationHint,
|
||||
ShowPPUCompilationHint,
|
||||
ShowAutosaveAutoloadHint,
|
||||
|
|
@ -227,225 +228,4 @@ enum class emu_settings_type
|
|||
};
|
||||
|
||||
/** A helper map that keeps track of where a given setting type is located*/
|
||||
inline static const std::map<emu_settings_type, cfg_location> settings_location =
|
||||
{
|
||||
// Core Tab
|
||||
{ emu_settings_type::PPUDecoder, { "Core", "PPU Decoder"}},
|
||||
{ emu_settings_type::SPUDecoder, { "Core", "SPU Decoder"}},
|
||||
{ emu_settings_type::HookStaticFuncs, { "Core", "Hook static functions"}},
|
||||
{ emu_settings_type::ThreadSchedulerMode, { "Core", "Thread Scheduler Mode"}},
|
||||
{ emu_settings_type::SPULoopDetection, { "Core", "SPU loop detection"}},
|
||||
{ emu_settings_type::PreferredSPUThreads, { "Core", "Preferred SPU Threads"}},
|
||||
{ emu_settings_type::PPUDebug, { "Core", "PPU Debug"}},
|
||||
{ emu_settings_type::SPUDebug, { "Core", "SPU Debug"}},
|
||||
{ emu_settings_type::MFCDebug, { "Core", "MFC Debug"}},
|
||||
{ emu_settings_type::MaxLLVMThreads, { "Core", "Max LLVM Compile Threads"}},
|
||||
{ emu_settings_type::LLVMPrecompilation, { "Core", "LLVM Precompilation"}},
|
||||
{ emu_settings_type::AccurateSpuDMA, { "Core", "Accurate SPU DMA"}},
|
||||
{ emu_settings_type::AccurateClineStores, { "Core", "Accurate Cache Line Stores"}},
|
||||
{ emu_settings_type::AccurateRSXAccess, { "Core", "Accurate RSX reservation access"}},
|
||||
{ emu_settings_type::FIFOAccuracy, { "Core", "RSX FIFO Fetch Accuracy"}},
|
||||
{ emu_settings_type::XFloatAccuracy, { "Core", "SPU XFloat Accuracy"}},
|
||||
{ emu_settings_type::MFCCommandsShuffling, { "Core", "MFC Commands Shuffling Limit"}},
|
||||
{ emu_settings_type::SetDAZandFTZ, { "Core", "Set DAZ and FTZ"}},
|
||||
{ emu_settings_type::SPUBlockSize, { "Core", "SPU Block Size"}},
|
||||
{ emu_settings_type::SPUCache, { "Core", "SPU Cache"}},
|
||||
{ emu_settings_type::DebugConsoleMode, { "Core", "Debug Console Mode"}},
|
||||
{ emu_settings_type::MaxSPURSThreads, { "Core", "Max SPURS Threads"}},
|
||||
{ emu_settings_type::SleepTimersAccuracy, { "Core", "Sleep Timers Accuracy"}},
|
||||
{ emu_settings_type::ClocksScale, { "Core", "Clocks scale"}},
|
||||
{ emu_settings_type::AccuratePPU128Loop, { "Core", "Accurate PPU 128-byte Reservation Op Max Length"}},
|
||||
{ emu_settings_type::PerformanceReport, { "Core", "Enable Performance Report"}},
|
||||
{ emu_settings_type::FullWidthAVX512, { "Core", "Full Width AVX-512"}},
|
||||
{ emu_settings_type::NumPPUThreads, { "Core", "PPU Threads"}},
|
||||
{ emu_settings_type::PPUNJFixup, { "Core", "PPU LLVM Java Mode Handling"}},
|
||||
{ emu_settings_type::PPUVNANFixup, { "Core", "PPU Vector NaN Handling"}},
|
||||
{ emu_settings_type::AccurateDFMA, { "Core", "Use Accurate DFMA"}},
|
||||
{ emu_settings_type::AccuratePPUSAT, { "Core", "PPU Set Saturation Bit"}},
|
||||
{ emu_settings_type::AccuratePPUNJ, { "Core", "PPU Accurate Non-Java Mode"}},
|
||||
{ emu_settings_type::AccuratePPUVNAN, { "Core", "PPU Accurate Vector NaN Values"}},
|
||||
{ emu_settings_type::AccuratePPUFPCC, { "Core", "PPU Set FPCC Bits"}},
|
||||
{ emu_settings_type::MaxPreemptCount, { "Core", "Max CPU Preempt Count"}},
|
||||
{ emu_settings_type::SPUProfiler, { "Core", "SPU Profiler"}},
|
||||
{ emu_settings_type::DisableSpinOptimization, { "Core", "Disable SPU GETLLAR Spin Optimization"}},
|
||||
{ emu_settings_type::EnabledSPUEventsBusyLoop, { "Core", "SPU Reservation Busy Waiting Enabled"}},
|
||||
|
||||
// Graphics Tab
|
||||
{ emu_settings_type::Renderer, { "Video", "Renderer"}},
|
||||
{ emu_settings_type::Resolution, { "Video", "Resolution"}},
|
||||
{ emu_settings_type::AspectRatio, { "Video", "Aspect ratio"}},
|
||||
{ emu_settings_type::FrameLimit, { "Video", "Frame limit"}},
|
||||
{ emu_settings_type::MSAA, { "Video", "MSAA"}},
|
||||
{ emu_settings_type::LogShaderPrograms, { "Video", "Log shader programs"}},
|
||||
{ emu_settings_type::WriteDepthBuffer, { "Video", "Write Depth Buffer"}},
|
||||
{ emu_settings_type::WriteColorBuffers, { "Video", "Write Color Buffers"}},
|
||||
{ emu_settings_type::ReadColorBuffers, { "Video", "Read Color Buffers"}},
|
||||
{ emu_settings_type::ReadDepthBuffer, { "Video", "Read Depth Buffer"}},
|
||||
{ emu_settings_type::HandleRSXTiledMemory, { "Video", "Handle RSX Memory Tiling"}},
|
||||
{ emu_settings_type::VSync, { "Video", "VSync Mode"}},
|
||||
{ emu_settings_type::DebugOutput, { "Video", "Debug output"}},
|
||||
{ emu_settings_type::DebugOverlay, { "Video", "Debug overlay"}},
|
||||
{ emu_settings_type::RenderdocCompatibility, { "Video", "Renderdoc Compatibility Mode"}},
|
||||
{ emu_settings_type::GPUTextureScaling, { "Video", "Use GPU texture scaling"}},
|
||||
{ emu_settings_type::StretchToDisplayArea, { "Video", "Stretch To Display Area"}},
|
||||
{ emu_settings_type::ForceHighpZ, { "Video", "Force High Precision Z buffer"}},
|
||||
{ emu_settings_type::StrictRenderingMode, { "Video", "Strict Rendering Mode"}},
|
||||
{ emu_settings_type::DisableVertexCache, { "Video", "Disable Vertex Cache"}},
|
||||
{ emu_settings_type::DisableOcclusionQueries, { "Video", "Disable ZCull Occlusion Queries"}},
|
||||
{ emu_settings_type::DisableVideoOutput, { "Video", "Disable Video Output"}},
|
||||
{ emu_settings_type::DisableFIFOReordering, { "Video", "Disable FIFO Reordering"}},
|
||||
{ emu_settings_type::StereoRenderEnabled, { "Video", "3D Display Enabled"}},
|
||||
{ emu_settings_type::StereoRenderMode, { "Video", "3D Display Mode"}},
|
||||
{ emu_settings_type::ScreenSize, { "Video", "Screen size in inches"}},
|
||||
{ emu_settings_type::StrictTextureFlushing, { "Video", "Strict Texture Flushing"}},
|
||||
{ emu_settings_type::ForceCPUBlitEmulation, { "Video", "Force CPU Blit"}},
|
||||
{ emu_settings_type::DisableOnDiskShaderCache, { "Video", "Disable On-Disk Shader Cache"}},
|
||||
{ emu_settings_type::DisableVulkanMemAllocator, { "Video", "Disable Vulkan Memory Allocator"}},
|
||||
{ emu_settings_type::ShaderMode, { "Video", "Shader Mode"}},
|
||||
{ emu_settings_type::ShaderCompilerNumThreads, { "Video", "Shader Compiler Threads"}},
|
||||
{ emu_settings_type::ShaderPrecisionQuality, { "Video", "Shader Precision"}},
|
||||
{ emu_settings_type::MultithreadedRSX, { "Video", "Multithreaded RSX"}},
|
||||
{ emu_settings_type::RelaxedZCULL, { "Video", "Relaxed ZCULL Sync"}},
|
||||
{ emu_settings_type::PreciseZCULL, { "Video", "Accurate ZCULL stats"}},
|
||||
{ emu_settings_type::AnisotropicFilterOverride, { "Video", "Anisotropic Filter Override"}},
|
||||
{ emu_settings_type::TextureLodBias, { "Video", "Texture LOD Bias Addend"}},
|
||||
{ emu_settings_type::ResolutionScale, { "Video", "Resolution Scale"}},
|
||||
{ emu_settings_type::MinimumScalableDimension, { "Video", "Minimum Scalable Dimension"}},
|
||||
{ emu_settings_type::VulkanAdapter, { "Video", "Vulkan", "Adapter"}},
|
||||
{ emu_settings_type::VBlankRate, { "Video", "Vblank Rate"}},
|
||||
{ emu_settings_type::VBlankNTSCFixup, { "Video", "Vblank NTSC Fixup"}},
|
||||
{ emu_settings_type::DriverWakeUpDelay, { "Video", "Driver Wake-Up Delay"}},
|
||||
{ emu_settings_type::AllowHostGPULabels, { "Video", "Allow Host GPU Labels"}},
|
||||
{ emu_settings_type::DisableMSLFastMath, { "Video", "Disable MSL Fast Math"}},
|
||||
{ emu_settings_type::OutputScalingMode, { "Video", "Output Scaling Mode"}},
|
||||
{ emu_settings_type::ForceHwMSAAResolve, { "Video", "Force Hardware MSAA Resolve"}},
|
||||
{ emu_settings_type::DisableAsyncHostMM, { "Video", "Disable Asynchronous Memory Manager"}},
|
||||
{ emu_settings_type::RecordWithOverlays, { "Video", "Record With Overlays"}},
|
||||
{ emu_settings_type::DisableHWTexelRemapping, { "Video", "Disable Hardware ColorSpace Remapping"}},
|
||||
{ emu_settings_type::FsrSharpeningStrength, { "Video", "FidelityFX CAS Sharpening Intensity"}},
|
||||
|
||||
// Vulkan
|
||||
{ emu_settings_type::VulkanAsyncTextureUploads, { "Video", "Vulkan", "Asynchronous Texture Streaming"}},
|
||||
{ emu_settings_type::VulkanAsyncSchedulerDriver, { "Video", "Vulkan", "Asynchronous Queue Scheduler"}},
|
||||
{ emu_settings_type::ExclusiveFullscreenMode, { "Video", "Vulkan", "Exclusive Fullscreen Mode"}},
|
||||
{ emu_settings_type::UseReBAR, { "Video", "Vulkan", "Use Re-BAR for GPU uploads"}},
|
||||
|
||||
// Performance Overlay
|
||||
{ emu_settings_type::PerfOverlayEnabled, { "Video", "Performance Overlay", "Enabled" } },
|
||||
{ emu_settings_type::PerfOverlayFramerateGraphEnabled, { "Video", "Performance Overlay", "Enable Framerate Graph" } },
|
||||
{ emu_settings_type::PerfOverlayFrametimeGraphEnabled, { "Video", "Performance Overlay", "Enable Frametime Graph" } },
|
||||
{ emu_settings_type::PerfOverlayFramerateDatapoints, { "Video", "Performance Overlay", "Framerate datapoints" } },
|
||||
{ emu_settings_type::PerfOverlayFrametimeDatapoints, { "Video", "Performance Overlay", "Frametime datapoints" } },
|
||||
{ emu_settings_type::PerfOverlayDetailLevel, { "Video", "Performance Overlay", "Detail level" } },
|
||||
{ emu_settings_type::PerfOverlayFramerateDetailLevel, { "Video", "Performance Overlay", "Framerate graph detail level" } },
|
||||
{ emu_settings_type::PerfOverlayFrametimeDetailLevel, { "Video", "Performance Overlay", "Frametime graph detail level" } },
|
||||
{ emu_settings_type::PerfOverlayPosition, { "Video", "Performance Overlay", "Position" } },
|
||||
{ emu_settings_type::PerfOverlayUpdateInterval, { "Video", "Performance Overlay", "Metrics update interval (ms)" } },
|
||||
{ emu_settings_type::PerfOverlayFontSize, { "Video", "Performance Overlay", "Font size (px)" } },
|
||||
{ emu_settings_type::PerfOverlayOpacity, { "Video", "Performance Overlay", "Opacity (%)" } },
|
||||
{ emu_settings_type::PerfOverlayMarginX, { "Video", "Performance Overlay", "Horizontal Margin (%)" } },
|
||||
{ emu_settings_type::PerfOverlayMarginY, { "Video", "Performance Overlay", "Vertical Margin (%)" } },
|
||||
{ emu_settings_type::PerfOverlayCenterX, { "Video", "Performance Overlay", "Center Horizontally" } },
|
||||
{ emu_settings_type::PerfOverlayCenterY, { "Video", "Performance Overlay", "Center Vertically" } },
|
||||
{ emu_settings_type::PerfOverlayUseWindowSpace, { "Video", "Performance Overlay", "Use Window Space"}},
|
||||
|
||||
// Shader Loading Dialog
|
||||
{ emu_settings_type::ShaderLoadBgEnabled, { "Video", "Shader Loading Dialog", "Allow custom background" } },
|
||||
{ emu_settings_type::ShaderLoadBgDarkening, { "Video", "Shader Loading Dialog", "Darkening effect strength" } },
|
||||
{ emu_settings_type::ShaderLoadBgBlur, { "Video", "Shader Loading Dialog", "Blur effect strength" } },
|
||||
|
||||
// Audio
|
||||
{ emu_settings_type::AudioRenderer, { "Audio", "Renderer"}},
|
||||
{ emu_settings_type::DumpToFile, { "Audio", "Dump to file"}},
|
||||
{ emu_settings_type::ConvertTo16Bit, { "Audio", "Convert to 16 bit"}},
|
||||
{ emu_settings_type::AudioFormat, { "Audio", "Audio Format"}},
|
||||
{ emu_settings_type::AudioFormats, { "Audio", "Audio Formats"}},
|
||||
{ emu_settings_type::AudioProvider, { "Audio", "Audio Provider"}},
|
||||
{ emu_settings_type::AudioAvport, { "Audio", "RSXAudio Avport"}},
|
||||
{ emu_settings_type::AudioDevice, { "Audio", "Audio Device"}},
|
||||
{ emu_settings_type::AudioChannelLayout, { "Audio", "Audio Channel Layout"}},
|
||||
{ emu_settings_type::MasterVolume, { "Audio", "Master Volume"}},
|
||||
{ emu_settings_type::EnableBuffering, { "Audio", "Enable Buffering"}},
|
||||
{ emu_settings_type::AudioBufferDuration, { "Audio", "Desired Audio Buffer Duration"}},
|
||||
{ emu_settings_type::EnableTimeStretching, { "Audio", "Enable Time Stretching"}},
|
||||
{ emu_settings_type::TimeStretchingThreshold, { "Audio", "Time Stretching Threshold"}},
|
||||
{ emu_settings_type::MicrophoneType, { "Audio", "Microphone Type" }},
|
||||
{ emu_settings_type::MicrophoneDevices, { "Audio", "Microphone Devices" }},
|
||||
{ emu_settings_type::MusicHandler, { "Audio", "Music Handler"}},
|
||||
|
||||
// Input / Output
|
||||
{ emu_settings_type::BackgroundInput, { "Input/Output", "Background input enabled"}},
|
||||
{ emu_settings_type::ShowMoveCursor, { "Input/Output", "Show move cursor"}},
|
||||
{ emu_settings_type::LockOvlIptToP1, { "Input/Output", "Lock overlay input to player one"}},
|
||||
{ emu_settings_type::PadHandlerMode, { "Input/Output", "Pad handler mode"}},
|
||||
{ emu_settings_type::PadConnection, { "Input/Output", "Keep pads connected" }},
|
||||
{ emu_settings_type::KeyboardHandler, { "Input/Output", "Keyboard"}},
|
||||
{ emu_settings_type::MouseHandler, { "Input/Output", "Mouse"}},
|
||||
{ emu_settings_type::Camera, { "Input/Output", "Camera"}},
|
||||
{ emu_settings_type::CameraType, { "Input/Output", "Camera type"}},
|
||||
{ emu_settings_type::CameraFlip, { "Input/Output", "Camera flip"}},
|
||||
{ emu_settings_type::CameraID, { "Input/Output", "Camera ID"}},
|
||||
{ emu_settings_type::Move, { "Input/Output", "Move" }},
|
||||
{ emu_settings_type::Buzz, { "Input/Output", "Buzz emulated controller" }},
|
||||
{ emu_settings_type::Turntable, { "Input/Output", "Turntable emulated controller" }},
|
||||
{ emu_settings_type::GHLtar, { "Input/Output", "GHLtar emulated controller" }},
|
||||
{ emu_settings_type::MidiDevices, { "Input/Output", "Emulated Midi devices" }},
|
||||
{ emu_settings_type::SDLMappings, { "Input/Output", "Load SDL GameController Mappings" }},
|
||||
{ emu_settings_type::IoDebugOverlay, { "Input/Output", "IO Debug overlay" }},
|
||||
{ emu_settings_type::MouseDebugOverlay, { "Input/Output", "Mouse Debug overlay" }},
|
||||
|
||||
// Misc
|
||||
{ emu_settings_type::ExitRPCS3OnFinish, { "Miscellaneous", "Exit RPCS3 when process finishes" }},
|
||||
{ emu_settings_type::StartOnBoot, { "Miscellaneous", "Automatically start games after boot" }},
|
||||
{ emu_settings_type::PauseOnFocusLoss, { "Miscellaneous", "Pause emulation on RPCS3 focus loss" }},
|
||||
{ emu_settings_type::StartGameFullscreen, { "Miscellaneous", "Start games in fullscreen mode"}},
|
||||
{ emu_settings_type::PreventDisplaySleep, { "Miscellaneous", "Prevent display sleep while running games"}},
|
||||
{ emu_settings_type::ShowTrophyPopups, { "Miscellaneous", "Show trophy popups"}},
|
||||
{ emu_settings_type::ShowRpcnPopups, { "Miscellaneous", "Show RPCN popups"}},
|
||||
{ emu_settings_type::UseNativeInterface, { "Miscellaneous", "Use native user interface"}},
|
||||
{ emu_settings_type::ShowShaderCompilationHint, { "Miscellaneous", "Show shader compilation hint"}},
|
||||
{ emu_settings_type::ShowPPUCompilationHint, { "Miscellaneous", "Show PPU compilation hint"}},
|
||||
{ emu_settings_type::ShowAutosaveAutoloadHint, { "Miscellaneous", "Show autosave/autoload hint"}},
|
||||
{ emu_settings_type::ShowPressureIntensityToggleHint, { "Miscellaneous", "Show pressure intensity toggle hint"}},
|
||||
{ emu_settings_type::ShowAnalogLimiterToggleHint, { "Miscellaneous", "Show analog limiter toggle hint"}},
|
||||
{ emu_settings_type::ShowMouseAndKeyboardToggleHint, { "Miscellaneous", "Show mouse and keyboard toggle hint"}},
|
||||
{ emu_settings_type::ShowFatalErrorHints, { "Miscellaneous", "Show fatal error hints"}},
|
||||
{ emu_settings_type::ShowCaptureHints, { "Miscellaneous", "Show capture hints" }},
|
||||
{ emu_settings_type::SilenceAllLogs, { "Miscellaneous", "Silence All Logs" }},
|
||||
{ emu_settings_type::WindowTitleFormat, { "Miscellaneous", "Window Title Format" }},
|
||||
{ emu_settings_type::PauseDuringHomeMenu, { "Miscellaneous", "Pause Emulation During Home Menu" }},
|
||||
{ emu_settings_type::PlayMusicDuringBoot, { "Miscellaneous", "Play music during boot sequence" }},
|
||||
{ emu_settings_type::EnableGamemode, { "Miscellaneous", "Enable GameMode" }},
|
||||
|
||||
// Networking
|
||||
{ emu_settings_type::InternetStatus, { "Net", "Internet enabled"}},
|
||||
{ emu_settings_type::DNSAddress, { "Net", "DNS address"}},
|
||||
{ emu_settings_type::IpSwapList, { "Net", "IP swap list"}},
|
||||
{ emu_settings_type::PSNStatus, { "Net", "PSN status"}},
|
||||
{ emu_settings_type::BindAddress, { "Net", "Bind address"}},
|
||||
{ emu_settings_type::EnableUpnp, { "Net", "UPNP Enabled"}},
|
||||
{ emu_settings_type::PSNCountry, { "Net", "PSN Country"}},
|
||||
{ emu_settings_type::EnableClans, { "Net", "Clans Enabled"}},
|
||||
|
||||
// System
|
||||
{ emu_settings_type::LicenseArea, { "System", "License Area"}},
|
||||
{ emu_settings_type::Language, { "System", "Language"}},
|
||||
{ emu_settings_type::KeyboardType, { "System", "Keyboard Type"}},
|
||||
{ emu_settings_type::EnterButtonAssignment, { "System", "Enter button assignment"}},
|
||||
{ emu_settings_type::DateFormat, { "System", "Date Format"}},
|
||||
{ emu_settings_type::TimeFormat, { "System", "Time Format"}},
|
||||
{ emu_settings_type::ConsoleTimeOffset, { "System", "Console time offset (s)"}},
|
||||
|
||||
{ emu_settings_type::EnableHostRoot, { "VFS", "Enable /host_root/"}},
|
||||
{ emu_settings_type::EmptyHdd0Tmp, { "VFS", "Empty /dev_hdd0/tmp/"}},
|
||||
{ emu_settings_type::LimitCacheSize, { "VFS", "Limit disk cache size"}},
|
||||
{ emu_settings_type::MaximumCacheSize, { "VFS", "Disk cache maximum size (MB)"}},
|
||||
|
||||
// Savestates
|
||||
{ emu_settings_type::SuspendEmulationSavestateMode, { "Savestate", "Suspend Emulation Savestate Mode" }},
|
||||
{ emu_settings_type::CompatibleEmulationSavestateMode, { "Savestate", "Compatible Savestate Mode" }},
|
||||
{ emu_settings_type::StartSavestatePaused, { "Savestate", "Start Paused" }},
|
||||
|
||||
// Logs
|
||||
{ emu_settings_type::Log, { "Log" }},
|
||||
};
|
||||
extern const std::map<emu_settings_type, cfg_location> settings_location;
|
||||
|
|
|
|||
|
|
@ -1819,6 +1819,9 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
|||
m_emu_settings->EnhanceCheckBox(ui->useNativeInterface, emu_settings_type::UseNativeInterface);
|
||||
SubscribeTooltip(ui->useNativeInterface, tooltips.settings.use_native_interface);
|
||||
|
||||
m_emu_settings->EnhanceCheckBox(ui->useRecursiveScan, emu_settings_type::UseRecursiveScan);
|
||||
SubscribeTooltip(ui->useRecursiveScan, tooltips.settings.use_recursive_scan);
|
||||
|
||||
#if defined(__linux__)
|
||||
#if defined(GAMEMODE_AVAILABLE)
|
||||
m_emu_settings->EnhanceCheckBox(ui->enableGamemode, emu_settings_type::EnableGamemode);
|
||||
|
|
|
|||
|
|
@ -3012,6 +3012,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="useRecursiveScan">
|
||||
<property name="text">
|
||||
<string>Use recursive scan</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ public:
|
|||
const QString show_fatal_error_hints = tr("Shows fatal error hints using the native overlay.");
|
||||
const QString show_capture_hints = tr("Shows screenshot and recording hints using the native overlay.");
|
||||
const QString use_native_interface = tr("Enables use of native HUD within the game window that can interact with game controllers.\nWhen disabled, regular Qt dialogs are used instead.\nCurrently, the on-screen keyboard only supports the English key layout.");
|
||||
const QString use_recursive_scan = tr("Enables use of recursive scan on subfolders when scanning games from the selected folder.\nWhen disabled, games are scanned only on the selected folder.");
|
||||
const QString record_with_overlays = tr("Enables recording with overlays.\nThis also affects screenshots.");
|
||||
const QString pause_during_home_menu = tr("When enabled, opening the home menu will also pause emulation.\nWhile most games pause themselves while the home menu is shown, some do not.\nIn that case it can be helpful to pause the emulation whenever the home menu is open.");
|
||||
const QString play_music_during_boot = tr("Play music during boot sequence if available.");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue