From 0c6f2b470fde23011ba3c840b6ed40f79cbee7b7 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sat, 5 Apr 2025 13:14:27 -0700 Subject: [PATCH 01/27] renderer_vulkan: Use more depth-stencil dynamic state. (#2749) --- src/video_core/amdgpu/liverpool.h | 4 + .../renderer_vulkan/vk_graphics_pipeline.cpp | 30 ++-- .../renderer_vulkan/vk_graphics_pipeline.h | 16 -- .../renderer_vulkan/vk_instance.cpp | 4 + src/video_core/renderer_vulkan/vk_instance.h | 5 + .../renderer_vulkan/vk_pipeline_cache.cpp | 14 +- .../renderer_vulkan/vk_rasterizer.cpp | 157 ++++++++++-------- .../renderer_vulkan/vk_rasterizer.h | 3 +- 8 files changed, 116 insertions(+), 117 deletions(-) diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index 474c04ec2..8f9292f1c 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -1423,6 +1423,10 @@ struct Liverpool { return num_samples; } + bool IsClipDisabled() const { + return clipper_control.clip_disable || primitive_type == PrimitiveType::RectList; + } + void SetDefaults(); }; diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index c528258fb..7cd4bd872 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -105,7 +105,6 @@ GraphicsPipeline::GraphicsPipeline( .frontFace = key.front_face == Liverpool::FrontFace::Clockwise ? vk::FrontFace::eClockwise : vk::FrontFace::eCounterClockwise, - .depthBiasEnable = key.depth_bias_enable, .lineWidth = 1.0f, }; @@ -123,18 +122,20 @@ GraphicsPipeline::GraphicsPipeline( .pNext = instance.IsDepthClipControlSupported() ? &clip_control : nullptr, }; - boost::container::static_vector dynamic_states = { - vk::DynamicState::eViewportWithCountEXT, - vk::DynamicState::eScissorWithCountEXT, - vk::DynamicState::eBlendConstants, - vk::DynamicState::eDepthBounds, - vk::DynamicState::eDepthBias, - vk::DynamicState::eStencilReference, - vk::DynamicState::eStencilCompareMask, - vk::DynamicState::eStencilWriteMask, + boost::container::static_vector dynamic_states = { + vk::DynamicState::eViewportWithCountEXT, vk::DynamicState::eScissorWithCountEXT, + vk::DynamicState::eBlendConstants, vk::DynamicState::eDepthTestEnableEXT, + vk::DynamicState::eDepthWriteEnableEXT, vk::DynamicState::eDepthCompareOpEXT, + vk::DynamicState::eDepthBiasEnableEXT, vk::DynamicState::eDepthBias, + vk::DynamicState::eStencilTestEnableEXT, vk::DynamicState::eStencilReference, + vk::DynamicState::eStencilCompareMask, vk::DynamicState::eStencilWriteMask, vk::DynamicState::eStencilOpEXT, }; + if (instance.IsDepthBoundsSupported()) { + dynamic_states.push_back(vk::DynamicState::eDepthBoundsTestEnableEXT); + dynamic_states.push_back(vk::DynamicState::eDepthBounds); + } if (instance.IsDynamicColorWriteMaskSupported()) { dynamic_states.push_back(vk::DynamicState::eColorWriteMaskEXT); } @@ -149,14 +150,6 @@ GraphicsPipeline::GraphicsPipeline( .pDynamicStates = dynamic_states.data(), }; - const vk::PipelineDepthStencilStateCreateInfo depth_info = { - .depthTestEnable = key.depth_test_enable, - .depthWriteEnable = key.depth_write_enable, - .depthCompareOp = key.depth_compare_op, - .depthBoundsTestEnable = key.depth_bounds_test_enable, - .stencilTestEnable = key.stencil_test_enable, - }; - boost::container::static_vector shader_stages; auto stage = u32(Shader::LogicalStage::Vertex); @@ -292,7 +285,6 @@ GraphicsPipeline::GraphicsPipeline( .pViewportState = &viewport_info, .pRasterizationState = &raster_state, .pMultisampleState = &multisampling, - .pDepthStencilState = &depth_info, .pColorBlendState = &color_blending, .pDynamicState = &dynamic_info, .layout = *pipeline_layout, diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h index e6596db2f..7ffd14064 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h @@ -39,18 +39,6 @@ struct GraphicsPipelineKey { vk::Format depth_format; vk::Format stencil_format; - struct { - bool clip_disable : 1; - bool depth_test_enable : 1; - bool depth_write_enable : 1; - bool depth_bounds_test_enable : 1; - bool depth_bias_enable : 1; - bool stencil_test_enable : 1; - // Must be named to be zero-initialized. - u8 _unused : 2; - }; - vk::CompareOp depth_compare_op; - u32 num_samples; u32 mrt_mask; AmdGpu::PrimitiveType prim_type; @@ -94,10 +82,6 @@ public: return key.mrt_mask; } - auto IsClipDisabled() const { - return key.clip_disable; - } - [[nodiscard]] bool IsPrimitiveListTopology() const { return key.prim_type == AmdGpu::PrimitiveType::PointList || key.prim_type == AmdGpu::PrimitiveType::LineList || diff --git a/src/video_core/renderer_vulkan/vk_instance.cpp b/src/video_core/renderer_vulkan/vk_instance.cpp index 1f0125791..d45889054 100644 --- a/src/video_core/renderer_vulkan/vk_instance.cpp +++ b/src/video_core/renderer_vulkan/vk_instance.cpp @@ -247,6 +247,7 @@ bool Instance::CreateDevice() { add_extension(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME); add_extension(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME); add_extension(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); + add_extension(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); add_extension(VK_EXT_TOOLING_INFO_EXTENSION_NAME); const bool maintenance4 = add_extension(VK_KHR_MAINTENANCE_4_EXTENSION_NAME); @@ -380,6 +381,9 @@ bool Instance::CreateDevice() { vk::PhysicalDeviceExtendedDynamicStateFeaturesEXT{ .extendedDynamicState = true, }, + vk::PhysicalDeviceExtendedDynamicState2FeaturesEXT{ + .extendedDynamicState2 = true, + }, vk::PhysicalDeviceMaintenance4FeaturesKHR{ .maintenance4 = true, }, diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 013003b9b..04b68c1d0 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -84,6 +84,11 @@ public: return features.samplerAnisotropy; } + /// Returns true if depth bounds testing is supported + bool IsDepthBoundsSupported() const { + return features.depthBounds; + } + /// Returns true when VK_EXT_custom_border_color is supported bool IsCustomBorderColorSupported() const { return custom_border_color; diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index d51c8fbd5..17a1fdec4 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -123,7 +123,7 @@ const Shader::RuntimeInfo& PipelineCache::BuildRuntimeInfo(Stage stage, LogicalS info.vs_info.emulate_depth_negative_one_to_one = !instance.IsDepthClipControlSupported() && regs.clipper_control.clip_space == Liverpool::ClipSpace::MinusWToW; - info.vs_info.clip_disable = graphics_key.clip_disable; + info.vs_info.clip_disable = regs.IsClipDisabled(); if (l_stage == LogicalStage::TessellationEval) { info.vs_info.tess_type = regs.tess_config.type; info.vs_info.tess_topology = regs.tess_config.topology; @@ -267,16 +267,6 @@ bool PipelineCache::RefreshGraphicsKey() { auto& regs = liverpool->regs; auto& key = graphics_key; - key.clip_disable = - regs.clipper_control.clip_disable || regs.primitive_type == AmdGpu::PrimitiveType::RectList; - key.depth_test_enable = regs.depth_control.depth_enable; - key.depth_write_enable = - regs.depth_control.depth_write_enable && !regs.depth_render_control.depth_clear_enable; - key.depth_bounds_test_enable = regs.depth_control.depth_bounds_enable; - key.depth_bias_enable = regs.polygon_control.NeedsBias(); - key.depth_compare_op = LiverpoolToVK::CompareOp(regs.depth_control.depth_func); - key.stencil_test_enable = regs.depth_control.stencil_enable; - const auto depth_format = instance.GetSupportedFormat( LiverpoolToVK::DepthFormat(regs.depth_buffer.z_info.format, regs.depth_buffer.stencil_info.format), @@ -285,13 +275,11 @@ bool PipelineCache::RefreshGraphicsKey() { key.depth_format = depth_format; } else { key.depth_format = vk::Format::eUndefined; - key.depth_test_enable = false; } if (regs.depth_buffer.StencilValid()) { key.stencil_format = depth_format; } else { key.stencil_format = vk::Format::eUndefined; - key.stencil_test_enable = false; } key.prim_type = regs.primitive_type; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 87d07a967..ecb0c0a75 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -947,81 +947,18 @@ void Rasterizer::UnmapMemory(VAddr addr, u64 size) { } void Rasterizer::UpdateDynamicState(const GraphicsPipeline& pipeline) { - UpdateViewportScissorState(pipeline); + UpdateViewportScissorState(); + UpdateDepthStencilState(); - auto& regs = liverpool->regs; + const auto& regs = liverpool->regs; const auto cmdbuf = scheduler.CommandBuffer(); cmdbuf.setBlendConstants(®s.blend_constants.red); - if (instance.IsDynamicColorWriteMaskSupported()) { cmdbuf.setColorWriteMaskEXT(0, pipeline.GetWriteMasks()); } - if (regs.depth_control.depth_bounds_enable) { - cmdbuf.setDepthBounds(regs.depth_bounds_min, regs.depth_bounds_max); - } - if (regs.polygon_control.enable_polygon_offset_front) { - cmdbuf.setDepthBias(regs.poly_offset.front_offset, regs.poly_offset.depth_bias, - regs.poly_offset.front_scale / 16.f); - } else if (regs.polygon_control.enable_polygon_offset_back) { - cmdbuf.setDepthBias(regs.poly_offset.back_offset, regs.poly_offset.depth_bias, - regs.poly_offset.back_scale / 16.f); - } - - if (regs.depth_control.stencil_enable) { - const auto front_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_front); - const auto front_pass_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_front); - const auto front_depth_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_front); - const auto front_compare_op = LiverpoolToVK::CompareOp(regs.depth_control.stencil_ref_func); - if (regs.depth_control.backface_enable) { - const auto back_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_back); - const auto back_pass_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_back); - const auto back_depth_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_back); - const auto back_compare_op = - LiverpoolToVK::CompareOp(regs.depth_control.stencil_bf_func); - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFront, front_fail_op, front_pass_op, - front_depth_fail_op, front_compare_op); - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eBack, back_fail_op, back_pass_op, - back_depth_fail_op, back_compare_op); - } else { - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFrontAndBack, front_fail_op, - front_pass_op, front_depth_fail_op, front_compare_op); - } - - const auto front = regs.stencil_ref_front; - const auto back = regs.stencil_ref_back; - if (front.stencil_test_val == back.stencil_test_val) { - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_test_val); - } else { - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFront, front.stencil_test_val); - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eBack, back.stencil_test_val); - } - - if (front.stencil_write_mask == back.stencil_write_mask) { - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_write_mask); - } else { - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFront, front.stencil_write_mask); - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eBack, back.stencil_write_mask); - } - - if (front.stencil_mask == back.stencil_mask) { - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_mask); - } else { - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFront, front.stencil_mask); - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eBack, back.stencil_mask); - } - } } -void Rasterizer::UpdateViewportScissorState(const GraphicsPipeline& pipeline) { +void Rasterizer::UpdateViewportScissorState() { const auto& regs = liverpool->regs; const auto combined_scissor_value_tl = [](s16 scr, s16 win, s16 gen, s16 win_offset) { @@ -1072,7 +1009,7 @@ void Rasterizer::UpdateViewportScissorState(const GraphicsPipeline& pipeline) { const auto zoffset = vp_ctl.zoffset_enable ? vp.zoffset : 0.f; const auto zscale = vp_ctl.zscale_enable ? vp.zscale : 1.f; - if (pipeline.IsClipDisabled()) { + if (regs.IsClipDisabled()) { // In case if clipping is disabled we patch the shader to convert vertex position // from screen space coordinates to NDC by defining a render space as full hardware // window range [0..16383, 0..16383] and setting the viewport to its size. @@ -1139,6 +1076,90 @@ void Rasterizer::UpdateViewportScissorState(const GraphicsPipeline& pipeline) { cmdbuf.setScissorWithCountEXT(scissors); } +void Rasterizer::UpdateDepthStencilState() { + auto& regs = liverpool->regs; + const auto cmdbuf = scheduler.CommandBuffer(); + + bool depth_test = regs.depth_control.depth_enable && regs.depth_buffer.DepthValid(); + cmdbuf.setDepthTestEnableEXT(depth_test); + cmdbuf.setDepthWriteEnableEXT(regs.depth_control.depth_write_enable && + !regs.depth_render_control.depth_clear_enable); + if (depth_test) { + cmdbuf.setDepthCompareOpEXT(LiverpoolToVK::CompareOp(regs.depth_control.depth_func)); + } + + if (instance.IsDepthBoundsSupported()) { + cmdbuf.setDepthBoundsTestEnableEXT(regs.depth_control.depth_bounds_enable); + if (regs.depth_control.depth_bounds_enable) { + cmdbuf.setDepthBounds(regs.depth_bounds_min, regs.depth_bounds_max); + } + } + + cmdbuf.setDepthBiasEnableEXT(regs.polygon_control.NeedsBias()); + if (regs.polygon_control.enable_polygon_offset_front) { + cmdbuf.setDepthBias(regs.poly_offset.front_offset, regs.poly_offset.depth_bias, + regs.poly_offset.front_scale / 16.f); + } else if (regs.polygon_control.enable_polygon_offset_back) { + cmdbuf.setDepthBias(regs.poly_offset.back_offset, regs.poly_offset.depth_bias, + regs.poly_offset.back_scale / 16.f); + } + + cmdbuf.setStencilTestEnableEXT(regs.depth_control.stencil_enable && + regs.depth_buffer.StencilValid()); + if (regs.depth_control.stencil_enable) { + const auto front_fail_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_front); + const auto front_pass_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_front); + const auto front_depth_fail_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_front); + const auto front_compare_op = LiverpoolToVK::CompareOp(regs.depth_control.stencil_ref_func); + if (regs.depth_control.backface_enable) { + const auto back_fail_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_back); + const auto back_pass_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_back); + const auto back_depth_fail_op = + LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_back); + const auto back_compare_op = + LiverpoolToVK::CompareOp(regs.depth_control.stencil_bf_func); + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFront, front_fail_op, front_pass_op, + front_depth_fail_op, front_compare_op); + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eBack, back_fail_op, back_pass_op, + back_depth_fail_op, back_compare_op); + } else { + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFrontAndBack, front_fail_op, + front_pass_op, front_depth_fail_op, front_compare_op); + } + + const auto front = regs.stencil_ref_front; + const auto back = regs.stencil_ref_back; + if (front.stencil_test_val == back.stencil_test_val) { + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_test_val); + } else { + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFront, front.stencil_test_val); + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eBack, back.stencil_test_val); + } + + if (front.stencil_write_mask == back.stencil_write_mask) { + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_write_mask); + } else { + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFront, front.stencil_write_mask); + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eBack, back.stencil_write_mask); + } + + if (front.stencil_mask == back.stencil_mask) { + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, + front.stencil_mask); + } else { + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFront, front.stencil_mask); + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eBack, back.stencil_mask); + } + } +} + void Rasterizer::ScopeMarkerBegin(const std::string_view& str, bool from_guest) { if ((from_guest && !Config::getVkGuestMarkersEnabled()) || (!from_guest && !Config::getVkHostMarkersEnabled())) { diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 2fac8c8da..8e5d0065b 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -76,7 +76,8 @@ private: void EliminateFastClear(); void UpdateDynamicState(const GraphicsPipeline& pipeline); - void UpdateViewportScissorState(const GraphicsPipeline& pipeline); + void UpdateViewportScissorState(); + void UpdateDepthStencilState(); bool FilterDraw(); From 9d2175180e1dafeecefef5d7870376c199107b6c Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Mon, 7 Apr 2025 02:22:51 -0700 Subject: [PATCH 02/27] build: Move versioning to CMake file. (#2752) --- CMakeLists.txt | 7 ++++--- src/common/config.cpp | 10 +++++----- src/common/scm_rev.cpp.in | 22 +++++++++------------- src/common/scm_rev.h | 3 +++ src/common/version.h | 14 -------------- src/emulator.cpp | 11 +++++------ src/input/input_handler.cpp | 1 - src/qt_gui/check_update.cpp | 5 ++--- src/qt_gui/gui_context_menus.h | 6 +++--- src/qt_gui/main_window.cpp | 9 ++++----- src/qt_gui/settings_dialog.cpp | 4 ++-- src/sdl_window.cpp | 1 - 12 files changed, 37 insertions(+), 56 deletions(-) delete mode 100644 src/common/version.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2af30ed46..844553340 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,6 +202,8 @@ execute_process( OUTPUT_STRIP_TRAILING_WHITESPACE ) +set(APP_VERSION "0.7.1 WIP") +set(APP_IS_RELEASE false) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/src/common/scm_rev.cpp" @ONLY) message("end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}") @@ -671,7 +673,6 @@ set(COMMON src/common/logging/backend.cpp src/common/uint128.h src/common/unique_function.h src/common/va_ctx.h - src/common/version.h src/common/ntapi.h src/common/ntapi.cpp src/common/number_utils.h @@ -1193,8 +1194,8 @@ if (ENABLE_QT_GUI) MACOSX_BUNDLE ON MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/dist/MacOSBundleInfo.plist.in" MACOSX_BUNDLE_ICON_FILE "shadPS4.icns" - MACOSX_BUNDLE_SHORT_VERSION_STRING "0.4.1" - ) + MACOSX_BUNDLE_SHORT_VERSION_STRING "${APP_VERSION}" + ) set_source_files_properties(src/images/shadPS4.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) diff --git a/src/common/config.cpp b/src/common/config.cpp index 2657cd12a..111c0cfa9 100644 --- a/src/common/config.cpp +++ b/src/common/config.cpp @@ -7,10 +7,10 @@ #include // for wstring support #include +#include "common/config.h" +#include "common/logging/formatter.h" #include "common/path_util.h" -#include "config.h" -#include "logging/formatter.h" -#include "version.h" +#include "common/scm_rev.h" namespace toml { template @@ -763,7 +763,7 @@ void load(const std::filesystem::path& path) { logFilter = toml::find_or(general, "logFilter", ""); logType = toml::find_or(general, "logType", "sync"); userName = toml::find_or(general, "userName", "shadPS4"); - if (Common::isRelease) { + if (Common::g_is_release) { updateChannel = toml::find_or(general, "updateChannel", "Release"); } else { updateChannel = toml::find_or(general, "updateChannel", "Nightly"); @@ -1108,7 +1108,7 @@ void setDefaultValues() { logFilter = ""; logType = "sync"; userName = "shadPS4"; - if (Common::isRelease) { + if (Common::g_is_release) { updateChannel = "Release"; } else { updateChannel = "Nightly"; diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in index 2de04e0be..71c4c2d0a 100644 --- a/src/common/scm_rev.cpp.in +++ b/src/common/scm_rev.cpp.in @@ -3,21 +3,17 @@ #include "common/scm_rev.h" -#define GIT_REV "@GIT_REV@" -#define GIT_BRANCH "@GIT_BRANCH@" -#define GIT_DESC "@GIT_DESC@" -#define GIT_REMOTE_NAME "@GIT_REMOTE_NAME@" -#define GIT_REMOTE_URL "@GIT_REMOTE_URL@" -#define BUILD_DATE "@BUILD_DATE@" - namespace Common { -const char g_scm_rev[] = GIT_REV; -const char g_scm_branch[] = GIT_BRANCH; -const char g_scm_desc[] = GIT_DESC; -const char g_scm_remote_name[] = GIT_REMOTE_NAME; -const char g_scm_remote_url[] = GIT_REMOTE_URL; -const char g_scm_date[] = BUILD_DATE; +constexpr char g_version[] = "@APP_VERSION@"; +constexpr bool g_is_release = @APP_IS_RELEASE@; + +constexpr char g_scm_rev[] = "@GIT_REV@"; +constexpr char g_scm_branch[] = "@GIT_BRANCH@"; +constexpr char g_scm_desc[] = "@GIT_DESC@"; +constexpr char g_scm_remote_name[] = "@GIT_REMOTE_NAME@"; +constexpr char g_scm_remote_url[] = "@GIT_REMOTE_URL@"; +constexpr char g_scm_date[] = "@BUILD_DATE@"; } // namespace diff --git a/src/common/scm_rev.h b/src/common/scm_rev.h index f38efff42..36b844e94 100644 --- a/src/common/scm_rev.h +++ b/src/common/scm_rev.h @@ -5,6 +5,9 @@ namespace Common { +extern const char g_version[]; +extern const bool g_is_release; + extern const char g_scm_rev[]; extern const char g_scm_branch[]; extern const char g_scm_desc[]; diff --git a/src/common/version.h b/src/common/version.h deleted file mode 100644 index 652f36e6d..000000000 --- a/src/common/version.h +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include -#include - -namespace Common { - -constexpr char VERSION[] = "0.7.1 WIP"; -constexpr bool isRelease = false; - -} // namespace Common diff --git a/src/emulator.cpp b/src/emulator.cpp index 5f94f008a..1a71b99cb 100644 --- a/src/emulator.cpp +++ b/src/emulator.cpp @@ -22,7 +22,6 @@ #include "common/polyfill_thread.h" #include "common/scm_rev.h" #include "common/singleton.h" -#include "common/version.h" #include "core/file_format/psf.h" #include "core/file_format/trp.h" #include "core/file_sys/fs.h" @@ -123,7 +122,7 @@ void Emulator::Run(const std::filesystem::path& file, const std::vector", id, title, app_version); std::string window_title = ""; - if (Common::isRelease) { - window_title = fmt::format("shadPS4 v{} | {}", Common::VERSION, game_title); + if (Common::g_is_release) { + window_title = fmt::format("shadPS4 v{} | {}", Common::g_version, game_title); } else { std::string remote_url(Common::g_scm_remote_url); std::string remote_host; @@ -208,10 +207,10 @@ void Emulator::Run(const std::filesystem::path& file, const std::vector #include #include -#include #include "check_update.h" using namespace Common::FS; @@ -52,7 +51,7 @@ void CheckUpdate::CheckForUpdates(const bool showMessage) { url = QUrl("https://api.github.com/repos/shadps4-emu/shadPS4/releases/latest"); checkName = false; } else { - if (Common::isRelease) { + if (Common::g_is_release) { Config::setUpdateChannel("Release"); } else { Config::setUpdateChannel("Nightly"); @@ -162,7 +161,7 @@ tr("The Auto Updater allows up to 60 update checks per hour.\\nYou have reached QString currentRev = (updateChannel == "Nightly") ? QString::fromStdString(Common::g_scm_rev) - : "v." + QString::fromStdString(Common::VERSION); + : "v." + QString::fromStdString(Common::g_version); QString currentDate = Common::g_scm_date; QDateTime dateTime = QDateTime::fromString(latestDate, Qt::ISODate); diff --git a/src/qt_gui/gui_context_menus.h b/src/qt_gui/gui_context_menus.h index b5732d0ca..0aff80ccc 100644 --- a/src/qt_gui/gui_context_menus.h +++ b/src/qt_gui/gui_context_menus.h @@ -13,7 +13,7 @@ #include "cheats_patches.h" #include "common/config.h" #include "common/path_util.h" -#include "common/version.h" +#include "common/scm_rev.h" #include "compatibility_info.h" #include "game_info.h" #include "trophy_viewer.h" @@ -115,7 +115,7 @@ public: compatibilityMenu->addAction(updateCompatibility); compatibilityMenu->addAction(viewCompatibilityReport); - if (Common::isRelease) { + if (Common::g_is_release) { compatibilityMenu->addAction(submitCompatibilityReport); } @@ -571,7 +571,7 @@ public: query.addQueryItem("game-name", QString::fromStdString(m_games[itemID].name)); query.addQueryItem("game-serial", QString::fromStdString(m_games[itemID].serial)); query.addQueryItem("game-version", QString::fromStdString(m_games[itemID].version)); - query.addQueryItem("emulator-version", QString(Common::VERSION)); + query.addQueryItem("emulator-version", QString(Common::g_version)); url.setQuery(query); QDesktopServices::openUrl(url); diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 072ad70e5..60ab58274 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -18,7 +18,6 @@ #include "common/path_util.h" #include "common/scm_rev.h" #include "common/string_util.h" -#include "common/version.h" #include "control_settings.h" #include "game_install_dialog.h" #include "kbm_gui.h" @@ -58,8 +57,8 @@ bool MainWindow::Init() { // show ui setMinimumSize(720, 405); std::string window_title = ""; - if (Common::isRelease) { - window_title = fmt::format("shadPS4 v{}", Common::VERSION); + if (Common::g_is_release) { + window_title = fmt::format("shadPS4 v{}", Common::g_version); } else { std::string remote_url(Common::g_scm_remote_url); std::string remote_host; @@ -69,10 +68,10 @@ bool MainWindow::Init() { remote_host = "unknown"; } if (remote_host == "shadps4-emu" || remote_url.length() == 0) { - window_title = fmt::format("shadPS4 v{} {} {}", Common::VERSION, Common::g_scm_branch, + window_title = fmt::format("shadPS4 v{} {} {}", Common::g_version, Common::g_scm_branch, Common::g_scm_desc); } else { - window_title = fmt::format("shadPS4 v{} {}/{} {}", Common::VERSION, remote_host, + window_title = fmt::format("shadPS4 v{} {}/{} {}", Common::g_version, remote_host, Common::g_scm_branch, Common::g_scm_desc); } } diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index 25c27fef3..5ee802b0c 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -9,7 +9,7 @@ #include #include "common/config.h" -#include "common/version.h" +#include "common/scm_rev.h" #include "qt_gui/compatibility_info.h" #ifdef ENABLE_DISCORD_RPC #include "common/discord_rpc_handler.h" @@ -491,7 +491,7 @@ void SettingsDialog::LoadValuesFromConfig() { QString updateChannel = QString::fromStdString(Config::getUpdateChannel()); ui->updateComboBox->setCurrentText( channelMap.key(updateChannel != "Release" && updateChannel != "Nightly" - ? (Common::isRelease ? "Release" : "Nightly") + ? (Common::g_is_release ? "Release" : "Nightly") : updateChannel)); #endif diff --git a/src/sdl_window.cpp b/src/sdl_window.cpp index fcdde7240..e369240c6 100644 --- a/src/sdl_window.cpp +++ b/src/sdl_window.cpp @@ -10,7 +10,6 @@ #include "common/assert.h" #include "common/config.h" #include "common/elf_info.h" -#include "common/version.h" #include "core/debug_state.h" #include "core/libraries/kernel/time.h" #include "core/libraries/pad/pad.h" From b8f6ef1c0b197291091af15713d48ac240fa61a9 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Mon, 7 Apr 2025 02:23:04 -0700 Subject: [PATCH 03/27] externals: Update MoltenVK (#2754) --- CMakeLists.txt | 2 +- externals/MoltenVK/MoltenVK | 2 +- externals/MoltenVK/SPIRV-Cross | 2 +- externals/vulkan-headers | 2 +- src/video_core/renderer_vulkan/vk_platform.cpp | 10 ---------- 5 files changed, 4 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 844553340..c5d9f7c9c 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,7 +220,7 @@ find_package(SDL3 3.1.2 CONFIG) find_package(stb MODULE) find_package(toml11 4.2.0 CONFIG) find_package(tsl-robin-map 1.3.0 CONFIG) -find_package(VulkanHeaders 1.4.305 CONFIG) +find_package(VulkanHeaders 1.4.309 CONFIG) find_package(VulkanMemoryAllocator 3.1.0 CONFIG) find_package(xbyak 7.07 CONFIG) find_package(xxHash 0.8.2 MODULE) diff --git a/externals/MoltenVK/MoltenVK b/externals/MoltenVK/MoltenVK index 2048427e5..83510e0f3 160000 --- a/externals/MoltenVK/MoltenVK +++ b/externals/MoltenVK/MoltenVK @@ -1 +1 @@ -Subproject commit 2048427e50f9eb20f2b8f98d316ecaee398c9b91 +Subproject commit 83510e0f3835c3c43651dda087305abc42572e17 diff --git a/externals/MoltenVK/SPIRV-Cross b/externals/MoltenVK/SPIRV-Cross index 2c32b6bf8..cb71abe30 160000 --- a/externals/MoltenVK/SPIRV-Cross +++ b/externals/MoltenVK/SPIRV-Cross @@ -1 +1 @@ -Subproject commit 2c32b6bf86f3c4a5539aa1f0bacbd59fe61759cf +Subproject commit cb71abe3063094bf383379b15473d39cb1144120 diff --git a/externals/vulkan-headers b/externals/vulkan-headers index a03d2f6d5..952f776f6 160000 --- a/externals/vulkan-headers +++ b/externals/vulkan-headers @@ -1 +1 @@ -Subproject commit a03d2f6d5753b365d704d58161825890baad0755 +Subproject commit 952f776f6573aafbb62ea717d871cd1d6816c387 diff --git a/src/video_core/renderer_vulkan/vk_platform.cpp b/src/video_core/renderer_vulkan/vk_platform.cpp index 716473377..e656369b2 100644 --- a/src/video_core/renderer_vulkan/vk_platform.cpp +++ b/src/video_core/renderer_vulkan/vk_platform.cpp @@ -278,7 +278,6 @@ vk::UniqueInstance CreateInstance(Frontend::WindowSystemType window_type, bool e vk::Bool32 enable_force_barriers = vk::True; #ifdef __APPLE__ const vk::Bool32 mvk_debug_mode = enable_crash_diagnostic ? vk::True : vk::False; - constexpr vk::Bool32 mvk_use_mtlheap = vk::True; #endif const std::array layer_setings = { @@ -355,15 +354,6 @@ vk::UniqueInstance CreateInstance(Frontend::WindowSystemType window_type, bool e .valueCount = 1, .pValues = &mvk_debug_mode, }, - // Use MTLHeap to back device memory, which among other things allows us to - // use VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT via memory aliasing. - vk::LayerSettingEXT{ - .pLayerName = "MoltenVK", - .pSettingName = "MVK_CONFIG_USE_MTLHEAP", - .type = vk::LayerSettingTypeEXT::eBool32, - .valueCount = 1, - .pValues = &mvk_use_mtlheap, - }, #endif }; From 473b66649f6fc4645812526eb21b520f8f88f302 Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Mon, 7 Apr 2025 11:25:49 +0200 Subject: [PATCH 04/27] Fix compatibility related issues in the GUI (#2755) Co-authored-by: georgemoralis --- src/qt_gui/gui_context_menus.h | 43 ++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/qt_gui/gui_context_menus.h b/src/qt_gui/gui_context_menus.h index 0aff80ccc..2fd4588d2 100644 --- a/src/qt_gui/gui_context_menus.h +++ b/src/qt_gui/gui_context_menus.h @@ -122,7 +122,8 @@ public: menu.addMenu(compatibilityMenu); compatibilityMenu->setEnabled(Config::getCompatibilityEnabled()); - viewCompatibilityReport->setEnabled(!m_games[itemID].compatibility.url.isEmpty()); + viewCompatibilityReport->setEnabled(m_games[itemID].compatibility.status != + CompatibilityStatus::Unknown); // Show menu. auto selected = menu.exec(global_pos); @@ -557,24 +558,36 @@ public: } if (selected == viewCompatibilityReport) { - if (!m_games[itemID].compatibility.url.isEmpty()) - QDesktopServices::openUrl(QUrl(m_games[itemID].compatibility.url)); + if (m_games[itemID].compatibility.issue_number != "") { + auto url_issues = + "https://github.com/shadps4-emu/shadps4-game-compatibility/issues/"; + QDesktopServices::openUrl( + QUrl(url_issues + m_games[itemID].compatibility.issue_number)); + } } if (selected == submitCompatibilityReport) { - QUrl url = QUrl("https://github.com/shadps4-emu/shadps4-game-compatibility/issues/new"); - QUrlQuery query; - query.addQueryItem("template", QString("game_compatibility.yml")); - query.addQueryItem( - "title", QString("%1 - %2").arg(QString::fromStdString(m_games[itemID].serial), - QString::fromStdString(m_games[itemID].name))); - query.addQueryItem("game-name", QString::fromStdString(m_games[itemID].name)); - query.addQueryItem("game-serial", QString::fromStdString(m_games[itemID].serial)); - query.addQueryItem("game-version", QString::fromStdString(m_games[itemID].version)); - query.addQueryItem("emulator-version", QString(Common::g_version)); - url.setQuery(query); + if (m_games[itemID].compatibility.issue_number == "") { + QUrl url = + QUrl("https://github.com/shadps4-emu/shadps4-game-compatibility/issues/new"); + QUrlQuery query; + query.addQueryItem("template", QString("game_compatibility.yml")); + query.addQueryItem( + "title", QString("%1 - %2").arg(QString::fromStdString(m_games[itemID].serial), + QString::fromStdString(m_games[itemID].name))); + query.addQueryItem("game-name", QString::fromStdString(m_games[itemID].name)); + query.addQueryItem("game-serial", QString::fromStdString(m_games[itemID].serial)); + query.addQueryItem("game-version", QString::fromStdString(m_games[itemID].version)); + query.addQueryItem("emulator-version", QString(Common::g_version)); + url.setQuery(query); - QDesktopServices::openUrl(url); + QDesktopServices::openUrl(url); + } else { + auto url_issues = + "https://github.com/shadps4-emu/shadps4-game-compatibility/issues/"; + QDesktopServices::openUrl( + QUrl(url_issues + m_games[itemID].compatibility.issue_number)); + } } } From 040fd79ef7fa3b47683a98d6cbc301c368ca6807 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:57:39 -0700 Subject: [PATCH 05/27] Revert "build: Target same CPU architecture level as PS4. (#2745)" (#2757) * Revert "build: Target same CPU architecture level as PS4. (#2745)" This reverts commit 54b4d7fc788d570c14924d21fbb1f58de0254aad. Causing issues on M1 CPUs for some reason. * build: Update architecture comments and set mtune=generic. --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5d9f7c9c..7f3d4468f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,8 +54,9 @@ else() endif() if (ARCHITECTURE STREQUAL "x86_64") - # Target the same x86_64 feature set as the PS4 CPU to match requirements. - add_compile_options(-march=btver2 -mno-sse4a) + # Target Sandy Bridge as a reasonable subset of instructions supported by PS4 and host CPUs. + # Note that the native PS4 architecture 'btver2' has been attempted but causes issues with M1 CPUs. + add_compile_options(-march=sandybridge -mtune=generic) endif() if (APPLE AND ARCHITECTURE STREQUAL "x86_64" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64") From 7fee289b66bcc650e7fd7f116a36e0976ea9cdca Mon Sep 17 00:00:00 2001 From: Missake212 Date: Mon, 7 Apr 2025 19:29:51 +0100 Subject: [PATCH 06/27] Add information about firmware files (sys modules) in the README (#2758) * Update README.md * Update README.md * Update README.md --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 6462c8bd2..0e2248970 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,27 @@ R3 | M | Keyboard and mouse inputs can be customized in the settings menu by clicking the Controller button, and further details and help on controls are also found there. Custom bindings are saved per-game. Inputs support up to three keys per binding, mouse buttons, mouse movement mapped to joystick input, and more. +# Firmware files + +shadPS4 can load some PlayStation 4 firmware files, these must be dumped from your legally owned PlayStation 4 console.\ +The following firmware modules are supported and must be placed in shadPS4's `user/sys_modules` folder. + +
+ +| Modules | Modules | Modules | Modules | +|-------------------------|-------------------------|-------------------------|-------------------------| +| libSceCesCs.sprx | libSceFont.sprx | libSceFontFt.sprx | libSceFreeTypeOt.sprx | +| libSceJson.sprx | libSceJson2.sprx | libSceLibcInternal.sprx | libSceNgs2.sprx | +| libSceRtc.sprx | libSceUlt.sprx | | | + +
+ +> [!Caution] +> The above modules are required to run the games properly and must be extracted from your PlayStation 4.\ +> **We do not provide any information or support on how to do this**. + + + # Main team - [**georgemoralis**](https://github.com/georgemoralis) From 08731303d857ba0d8684f77e193f2958e7691ccb Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Mon, 7 Apr 2025 22:58:00 +0200 Subject: [PATCH 07/27] Fix incorrect calculation setting the center of the joysticks one value off causing stick drift in games that assume already corrected input values (#2760) --- src/input/input_handler.cpp | 6 +++--- src/input/input_mouse.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/input/input_handler.cpp b/src/input/input_handler.cpp index f7c2ee296..3e2d66a6b 100644 --- a/src/input/input_handler.cpp +++ b/src/input/input_handler.cpp @@ -550,18 +550,18 @@ void ControllerOutput::FinalizeUpdate() { break; case Axis::TriggerLeft: ApplyDeadzone(new_param, lefttrigger_deadzone); - controller->Axis(0, c_axis, GetAxis(0x0, 0x80, *new_param)); + controller->Axis(0, c_axis, GetAxis(0x0, 0x7f, *new_param)); controller->CheckButton(0, OrbisPadButtonDataOffset::L2, *new_param > 0x20); return; case Axis::TriggerRight: ApplyDeadzone(new_param, righttrigger_deadzone); - controller->Axis(0, c_axis, GetAxis(0x0, 0x80, *new_param)); + controller->Axis(0, c_axis, GetAxis(0x0, 0x7f, *new_param)); controller->CheckButton(0, OrbisPadButtonDataOffset::R2, *new_param > 0x20); return; default: break; } - controller->Axis(0, c_axis, GetAxis(-0x80, 0x80, *new_param * multiplier)); + controller->Axis(0, c_axis, GetAxis(-0x80, 0x7f, *new_param * multiplier)); } } diff --git a/src/input/input_mouse.cpp b/src/input/input_mouse.cpp index 11feaeebb..c84d14b3f 100644 --- a/src/input/input_mouse.cpp +++ b/src/input/input_mouse.cpp @@ -61,11 +61,11 @@ Uint32 MousePolling(void* param, Uint32 id, Uint32 interval) { float a_x = cos(angle) * output_speed, a_y = sin(angle) * output_speed; if (d_x != 0 && d_y != 0) { - controller->Axis(0, axis_x, GetAxis(-0x80, 0x80, a_x)); - controller->Axis(0, axis_y, GetAxis(-0x80, 0x80, a_y)); + controller->Axis(0, axis_x, GetAxis(-0x80, 0x7f, a_x)); + controller->Axis(0, axis_y, GetAxis(-0x80, 0x7f, a_y)); } else { - controller->Axis(0, axis_x, GetAxis(-0x80, 0x80, 0)); - controller->Axis(0, axis_y, GetAxis(-0x80, 0x80, 0)); + controller->Axis(0, axis_x, GetAxis(-0x80, 0x7f, 0)); + controller->Axis(0, axis_y, GetAxis(-0x80, 0x7f, 0)); } return interval; From 03b1fef3318ce5f972e9d1c3590556e556343345 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Tue, 8 Apr 2025 07:22:16 -0700 Subject: [PATCH 08/27] renderer_vulkan: Only update dynamic state when changed. (#2751) --- .../renderer_vulkan/vk_rasterizer.cpp | 139 +++++------ .../renderer_vulkan/vk_rasterizer.h | 6 +- .../renderer_vulkan/vk_scheduler.cpp | 136 +++++++++++ src/video_core/renderer_vulkan/vk_scheduler.h | 219 ++++++++++++++++++ 4 files changed, 414 insertions(+), 86 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index ecb0c0a75..600c205e3 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -946,19 +946,19 @@ void Rasterizer::UnmapMemory(VAddr addr, u64 size) { mapped_ranges -= boost::icl::interval::right_open(addr, addr + size); } -void Rasterizer::UpdateDynamicState(const GraphicsPipeline& pipeline) { +void Rasterizer::UpdateDynamicState(const GraphicsPipeline& pipeline) const { UpdateViewportScissorState(); UpdateDepthStencilState(); - const auto& regs = liverpool->regs; - const auto cmdbuf = scheduler.CommandBuffer(); - cmdbuf.setBlendConstants(®s.blend_constants.red); - if (instance.IsDynamicColorWriteMaskSupported()) { - cmdbuf.setColorWriteMaskEXT(0, pipeline.GetWriteMasks()); - } + auto& dynamic_state = scheduler.GetDynamicState(); + dynamic_state.SetBlendConstants(&liverpool->regs.blend_constants.red); + dynamic_state.SetColorWriteMasks(pipeline.GetWriteMasks()); + + // Commit new dynamic state to the command buffer. + dynamic_state.Commit(instance, scheduler.CommandBuffer()); } -void Rasterizer::UpdateViewportScissorState() { +void Rasterizer::UpdateViewportScissorState() const { const auto& regs = liverpool->regs; const auto combined_scissor_value_tl = [](s16 scr, s16 win, s16 gen, s16 win_offset) { @@ -1071,92 +1071,65 @@ void Rasterizer::UpdateViewportScissorState() { scissors.push_back(empty_scissor); } - const auto cmdbuf = scheduler.CommandBuffer(); - cmdbuf.setViewportWithCountEXT(viewports); - cmdbuf.setScissorWithCountEXT(scissors); + auto& dynamic_state = scheduler.GetDynamicState(); + dynamic_state.SetViewports(viewports); + dynamic_state.SetScissors(scissors); } -void Rasterizer::UpdateDepthStencilState() { - auto& regs = liverpool->regs; - const auto cmdbuf = scheduler.CommandBuffer(); +void Rasterizer::UpdateDepthStencilState() const { + const auto& regs = liverpool->regs; + auto& dynamic_state = scheduler.GetDynamicState(); - bool depth_test = regs.depth_control.depth_enable && regs.depth_buffer.DepthValid(); - cmdbuf.setDepthTestEnableEXT(depth_test); - cmdbuf.setDepthWriteEnableEXT(regs.depth_control.depth_write_enable && - !regs.depth_render_control.depth_clear_enable); - if (depth_test) { - cmdbuf.setDepthCompareOpEXT(LiverpoolToVK::CompareOp(regs.depth_control.depth_func)); + const auto depth_test_enabled = + regs.depth_control.depth_enable && regs.depth_buffer.DepthValid(); + dynamic_state.SetDepthTestEnabled(depth_test_enabled); + if (depth_test_enabled) { + dynamic_state.SetDepthWriteEnabled(regs.depth_control.depth_write_enable && + !regs.depth_render_control.depth_clear_enable); + dynamic_state.SetDepthCompareOp(LiverpoolToVK::CompareOp(regs.depth_control.depth_func)); } - if (instance.IsDepthBoundsSupported()) { - cmdbuf.setDepthBoundsTestEnableEXT(regs.depth_control.depth_bounds_enable); - if (regs.depth_control.depth_bounds_enable) { - cmdbuf.setDepthBounds(regs.depth_bounds_min, regs.depth_bounds_max); - } + const auto depth_bounds_test_enabled = regs.depth_control.depth_bounds_enable; + dynamic_state.SetDepthBoundsTestEnabled(depth_bounds_test_enabled); + if (depth_bounds_test_enabled) { + dynamic_state.SetDepthBounds(regs.depth_bounds_min, regs.depth_bounds_max); } - cmdbuf.setDepthBiasEnableEXT(regs.polygon_control.NeedsBias()); - if (regs.polygon_control.enable_polygon_offset_front) { - cmdbuf.setDepthBias(regs.poly_offset.front_offset, regs.poly_offset.depth_bias, - regs.poly_offset.front_scale / 16.f); - } else if (regs.polygon_control.enable_polygon_offset_back) { - cmdbuf.setDepthBias(regs.poly_offset.back_offset, regs.poly_offset.depth_bias, - regs.poly_offset.back_scale / 16.f); + const auto depth_bias_enabled = regs.polygon_control.NeedsBias(); + if (depth_bias_enabled) { + dynamic_state.SetDepthBias( + regs.polygon_control.enable_polygon_offset_front ? regs.poly_offset.front_offset + : regs.poly_offset.back_offset, + regs.poly_offset.depth_bias, + (regs.polygon_control.enable_polygon_offset_front ? regs.poly_offset.front_scale + : regs.poly_offset.back_scale) / + 16.f); } - cmdbuf.setStencilTestEnableEXT(regs.depth_control.stencil_enable && - regs.depth_buffer.StencilValid()); - if (regs.depth_control.stencil_enable) { - const auto front_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_front); - const auto front_pass_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_front); - const auto front_depth_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_front); - const auto front_compare_op = LiverpoolToVK::CompareOp(regs.depth_control.stencil_ref_func); - if (regs.depth_control.backface_enable) { - const auto back_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_back); - const auto back_pass_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_back); - const auto back_depth_fail_op = - LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_back); - const auto back_compare_op = - LiverpoolToVK::CompareOp(regs.depth_control.stencil_bf_func); - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFront, front_fail_op, front_pass_op, - front_depth_fail_op, front_compare_op); - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eBack, back_fail_op, back_pass_op, - back_depth_fail_op, back_compare_op); - } else { - cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFrontAndBack, front_fail_op, - front_pass_op, front_depth_fail_op, front_compare_op); - } + const auto stencil_test_enabled = + regs.depth_control.stencil_enable && regs.depth_buffer.StencilValid(); + dynamic_state.SetStencilTestEnabled(stencil_test_enabled); + if (stencil_test_enabled) { + const StencilOps front_ops{ + .fail_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_front), + .pass_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_front), + .depth_fail_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_front), + .compare_op = LiverpoolToVK::CompareOp(regs.depth_control.stencil_ref_func), + }; + const StencilOps back_ops = regs.depth_control.backface_enable ? StencilOps{ + .fail_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_fail_back), + .pass_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zpass_back), + .depth_fail_op = LiverpoolToVK::StencilOp(regs.stencil_control.stencil_zfail_back), + .compare_op = LiverpoolToVK::CompareOp(regs.depth_control.stencil_bf_func), + } : front_ops; + dynamic_state.SetStencilOps(front_ops, back_ops); const auto front = regs.stencil_ref_front; - const auto back = regs.stencil_ref_back; - if (front.stencil_test_val == back.stencil_test_val) { - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_test_val); - } else { - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFront, front.stencil_test_val); - cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eBack, back.stencil_test_val); - } - - if (front.stencil_write_mask == back.stencil_write_mask) { - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_write_mask); - } else { - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFront, front.stencil_write_mask); - cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eBack, back.stencil_write_mask); - } - - if (front.stencil_mask == back.stencil_mask) { - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, - front.stencil_mask); - } else { - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFront, front.stencil_mask); - cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eBack, back.stencil_mask); - } + const auto back = + regs.depth_control.backface_enable ? regs.stencil_ref_back : regs.stencil_ref_front; + dynamic_state.SetStencilReferences(front.stencil_test_val, back.stencil_test_val); + dynamic_state.SetStencilWriteMasks(front.stencil_write_mask, back.stencil_write_mask); + dynamic_state.SetStencilCompareMasks(front.stencil_mask, back.stencil_mask); } } diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 8e5d0065b..02c24c7ec 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -75,9 +75,9 @@ private: void DepthStencilCopy(bool is_depth, bool is_stencil); void EliminateFastClear(); - void UpdateDynamicState(const GraphicsPipeline& pipeline); - void UpdateViewportScissorState(); - void UpdateDepthStencilState(); + void UpdateDynamicState(const GraphicsPipeline& pipeline) const; + void UpdateViewportScissorState() const; + void UpdateDepthStencilState() const; bool FilterDraw(); diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index fd84c54ed..6b872bdaa 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -97,6 +97,9 @@ void Scheduler::AllocateWorkerCommandBuffers() { ASSERT_MSG(begin_result == vk::Result::eSuccess, "Failed to begin command buffer: {}", vk::to_string(begin_result)); + // Invalidate dynamic state so it gets applied to the new command buffer. + dynamic_state.Invalidate(); + #if TRACY_GPU_ENABLED auto* profiler_ctx = instance.GetProfilerContext(); if (profiler_ctx) { @@ -164,4 +167,137 @@ void Scheduler::SubmitExecution(SubmitInfo& info) { } } +void DynamicState::Commit(const Instance& instance, const vk::CommandBuffer& cmdbuf) { + if (dirty_state.viewports) { + dirty_state.viewports = false; + cmdbuf.setViewportWithCountEXT(viewports); + } + if (dirty_state.scissors) { + dirty_state.scissors = false; + cmdbuf.setScissorWithCountEXT(scissors); + } + if (dirty_state.depth_test_enabled) { + dirty_state.depth_test_enabled = false; + cmdbuf.setDepthTestEnableEXT(depth_test_enabled); + } + if (dirty_state.depth_write_enabled) { + dirty_state.depth_write_enabled = false; + // Note that this must be set in a command buffer even if depth test is disabled. + cmdbuf.setDepthWriteEnableEXT(depth_write_enabled); + } + if (depth_test_enabled && dirty_state.depth_compare_op) { + dirty_state.depth_compare_op = false; + cmdbuf.setDepthCompareOpEXT(depth_compare_op); + } + if (dirty_state.depth_bounds_test_enabled) { + dirty_state.depth_bounds_test_enabled = false; + if (instance.IsDepthBoundsSupported()) { + cmdbuf.setDepthBoundsTestEnableEXT(depth_bounds_test_enabled); + } + } + if (depth_bounds_test_enabled && dirty_state.depth_bounds) { + dirty_state.depth_bounds = false; + if (instance.IsDepthBoundsSupported()) { + cmdbuf.setDepthBounds(depth_bounds_min, depth_bounds_max); + } + } + if (dirty_state.depth_bias_enabled) { + dirty_state.depth_bias_enabled = false; + cmdbuf.setDepthBiasEnableEXT(depth_bias_enabled); + } + if (depth_bias_enabled && dirty_state.depth_bias) { + dirty_state.depth_bias = false; + cmdbuf.setDepthBias(depth_bias_constant, depth_bias_clamp, depth_bias_slope); + } + if (dirty_state.stencil_test_enabled) { + dirty_state.stencil_test_enabled = false; + cmdbuf.setStencilTestEnableEXT(stencil_test_enabled); + } + if (stencil_test_enabled) { + if (dirty_state.stencil_front_ops && dirty_state.stencil_back_ops && + stencil_front_ops == stencil_back_ops) { + dirty_state.stencil_front_ops = false; + dirty_state.stencil_back_ops = false; + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFrontAndBack, + stencil_front_ops.fail_op, stencil_front_ops.pass_op, + stencil_front_ops.depth_fail_op, stencil_front_ops.compare_op); + } else { + if (dirty_state.stencil_front_ops) { + dirty_state.stencil_front_ops = false; + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eFront, stencil_front_ops.fail_op, + stencil_front_ops.pass_op, stencil_front_ops.depth_fail_op, + stencil_front_ops.compare_op); + } + if (dirty_state.stencil_back_ops) { + dirty_state.stencil_back_ops = false; + cmdbuf.setStencilOpEXT(vk::StencilFaceFlagBits::eBack, stencil_back_ops.fail_op, + stencil_back_ops.pass_op, stencil_back_ops.depth_fail_op, + stencil_back_ops.compare_op); + } + } + if (dirty_state.stencil_front_reference && dirty_state.stencil_back_reference && + stencil_front_reference == stencil_back_reference) { + dirty_state.stencil_front_reference = false; + dirty_state.stencil_back_reference = false; + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFrontAndBack, + stencil_front_reference); + } else { + if (dirty_state.stencil_front_reference) { + dirty_state.stencil_front_reference = false; + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eFront, + stencil_front_reference); + } + if (dirty_state.stencil_back_reference) { + dirty_state.stencil_back_reference = false; + cmdbuf.setStencilReference(vk::StencilFaceFlagBits::eBack, stencil_back_reference); + } + } + if (dirty_state.stencil_front_write_mask && dirty_state.stencil_back_write_mask && + stencil_front_write_mask == stencil_back_write_mask) { + dirty_state.stencil_front_write_mask = false; + dirty_state.stencil_back_write_mask = false; + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFrontAndBack, + stencil_front_write_mask); + } else { + if (dirty_state.stencil_front_write_mask) { + dirty_state.stencil_front_write_mask = false; + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eFront, + stencil_front_write_mask); + } + if (dirty_state.stencil_back_write_mask) { + dirty_state.stencil_back_write_mask = false; + cmdbuf.setStencilWriteMask(vk::StencilFaceFlagBits::eBack, stencil_back_write_mask); + } + } + if (dirty_state.stencil_front_compare_mask && dirty_state.stencil_back_compare_mask && + stencil_front_compare_mask == stencil_back_compare_mask) { + dirty_state.stencil_front_compare_mask = false; + dirty_state.stencil_back_compare_mask = false; + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFrontAndBack, + stencil_front_compare_mask); + } else { + if (dirty_state.stencil_front_compare_mask) { + dirty_state.stencil_front_compare_mask = false; + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eFront, + stencil_front_compare_mask); + } + if (dirty_state.stencil_back_compare_mask) { + dirty_state.stencil_back_compare_mask = false; + cmdbuf.setStencilCompareMask(vk::StencilFaceFlagBits::eBack, + stencil_back_compare_mask); + } + } + } + if (dirty_state.blend_constants) { + dirty_state.blend_constants = false; + cmdbuf.setBlendConstants(blend_constants); + } + if (dirty_state.color_write_masks) { + dirty_state.color_write_masks = false; + if (instance.IsDynamicColorWriteMaskSupported()) { + cmdbuf.setColorWriteMaskEXT(0, color_write_masks); + } + } +} + } // namespace Vulkan diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index fd5e68373..880bd4b04 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -7,6 +7,7 @@ #include #include "common/types.h" #include "common/unique_function.h" +#include "video_core/amdgpu/liverpool.h" #include "video_core/renderer_vulkan/vk_master_semaphore.h" #include "video_core/renderer_vulkan/vk_resource_pool.h" @@ -55,6 +56,219 @@ struct SubmitInfo { } }; +using Viewports = boost::container::static_vector; +using Scissors = boost::container::static_vector; +using ColorWriteMasks = std::array; +struct StencilOps { + vk::StencilOp fail_op{}; + vk::StencilOp pass_op{}; + vk::StencilOp depth_fail_op{}; + vk::CompareOp compare_op{}; + + bool operator==(const StencilOps& other) const { + return fail_op == other.fail_op && pass_op == other.pass_op && + depth_fail_op == other.depth_fail_op && compare_op == other.compare_op; + } +}; +struct DynamicState { + struct { + bool viewports : 1; + bool scissors : 1; + + bool depth_test_enabled : 1; + bool depth_write_enabled : 1; + bool depth_compare_op : 1; + + bool depth_bounds_test_enabled : 1; + bool depth_bounds : 1; + + bool depth_bias_enabled : 1; + bool depth_bias : 1; + + bool stencil_test_enabled : 1; + bool stencil_front_ops : 1; + bool stencil_front_reference : 1; + bool stencil_front_write_mask : 1; + bool stencil_front_compare_mask : 1; + bool stencil_back_ops : 1; + bool stencil_back_reference : 1; + bool stencil_back_write_mask : 1; + bool stencil_back_compare_mask : 1; + + bool blend_constants : 1; + bool color_write_masks : 1; + } dirty_state{}; + + Viewports viewports{}; + Scissors scissors{}; + + bool depth_test_enabled{}; + bool depth_write_enabled{}; + vk::CompareOp depth_compare_op{}; + + bool depth_bounds_test_enabled{}; + float depth_bounds_min{}; + float depth_bounds_max{}; + + bool depth_bias_enabled{}; + float depth_bias_constant{}; + float depth_bias_clamp{}; + float depth_bias_slope{}; + + bool stencil_test_enabled{}; + StencilOps stencil_front_ops{}; + u32 stencil_front_reference{}; + u32 stencil_front_write_mask{}; + u32 stencil_front_compare_mask{}; + StencilOps stencil_back_ops{}; + u32 stencil_back_reference{}; + u32 stencil_back_write_mask{}; + u32 stencil_back_compare_mask{}; + + float blend_constants[4]{}; + ColorWriteMasks color_write_masks{}; + + /// Commits the dynamic state to the provided command buffer. + void Commit(const Instance& instance, const vk::CommandBuffer& cmdbuf); + + /// Invalidates all dynamic state to be flushed into the next command buffer. + void Invalidate() { + std::memset(&dirty_state, 0xFF, sizeof(dirty_state)); + } + + void SetViewports(const Viewports& viewports_) { + if (!std::ranges::equal(viewports, viewports_)) { + viewports = viewports_; + dirty_state.viewports = true; + } + } + + void SetScissors(const Scissors& scissors_) { + if (!std::ranges::equal(scissors, scissors_)) { + scissors = scissors_; + dirty_state.scissors = true; + } + } + + void SetDepthTestEnabled(const bool enabled) { + if (depth_test_enabled != enabled) { + depth_test_enabled = enabled; + dirty_state.depth_test_enabled = true; + } + } + + void SetDepthWriteEnabled(const bool enabled) { + if (depth_write_enabled != enabled) { + depth_write_enabled = enabled; + dirty_state.depth_write_enabled = true; + } + } + + void SetDepthCompareOp(const vk::CompareOp compare_op) { + if (depth_compare_op != compare_op) { + depth_compare_op = compare_op; + dirty_state.depth_compare_op = true; + } + } + + void SetDepthBoundsTestEnabled(const bool enabled) { + if (depth_bounds_test_enabled != enabled) { + depth_bounds_test_enabled = enabled; + dirty_state.depth_bounds_test_enabled = true; + } + } + + void SetDepthBounds(const float min, const float max) { + if (depth_bounds_min != min || depth_bounds_max != max) { + depth_bounds_min = min; + depth_bounds_max = max; + dirty_state.depth_bounds = true; + } + } + + void SetDepthBiasEnabled(const bool enabled) { + if (depth_bias_enabled != enabled) { + depth_bias_enabled = enabled; + dirty_state.depth_bias_enabled = true; + } + } + + void SetDepthBias(const float constant, const float clamp, const float slope) { + if (depth_bias_constant != constant || depth_bias_clamp != clamp || + depth_bias_slope != slope) { + depth_bias_constant = constant; + depth_bias_clamp = clamp; + depth_bias_slope = slope; + dirty_state.depth_bias = true; + } + } + + void SetStencilTestEnabled(const bool enabled) { + if (stencil_test_enabled != enabled) { + stencil_test_enabled = enabled; + dirty_state.stencil_test_enabled = true; + } + } + + void SetStencilOps(const StencilOps& front_ops, const StencilOps& back_ops) { + if (stencil_front_ops != front_ops) { + stencil_front_ops = front_ops; + dirty_state.stencil_front_ops = true; + } + if (stencil_back_ops != back_ops) { + stencil_back_ops = back_ops; + dirty_state.stencil_back_ops = true; + } + } + + void SetStencilReferences(const u32 front_reference, const u32 back_reference) { + if (stencil_front_reference != front_reference) { + stencil_front_reference = front_reference; + dirty_state.stencil_front_reference = true; + } + if (stencil_back_reference != back_reference) { + stencil_back_reference = back_reference; + dirty_state.stencil_back_reference = true; + } + } + + void SetStencilWriteMasks(const u32 front_write_mask, const u32 back_write_mask) { + if (stencil_front_write_mask != front_write_mask) { + stencil_front_write_mask = front_write_mask; + dirty_state.stencil_front_write_mask = true; + } + if (stencil_back_write_mask != back_write_mask) { + stencil_back_write_mask = back_write_mask; + dirty_state.stencil_back_write_mask = true; + } + } + + void SetStencilCompareMasks(const u32 front_compare_mask, const u32 back_compare_mask) { + if (stencil_front_compare_mask != front_compare_mask) { + stencil_front_compare_mask = front_compare_mask; + dirty_state.stencil_front_compare_mask = true; + } + if (stencil_back_compare_mask != back_compare_mask) { + stencil_back_compare_mask = back_compare_mask; + dirty_state.stencil_back_compare_mask = true; + } + } + + void SetBlendConstants(const float blend_constants_[4]) { + if (!std::equal(blend_constants, std::end(blend_constants), blend_constants_)) { + std::memcpy(blend_constants, blend_constants_, sizeof(blend_constants)); + dirty_state.blend_constants = true; + } + } + + void SetColorWriteMasks(const ColorWriteMasks& color_write_masks_) { + if (!std::ranges::equal(color_write_masks, color_write_masks_)) { + color_write_masks = color_write_masks_; + dirty_state.color_write_masks = true; + } + } +}; + class Scheduler { public: explicit Scheduler(const Instance& instance); @@ -81,6 +295,10 @@ public: return render_state; } + DynamicState& GetDynamicState() { + return dynamic_state; + } + /// Returns the current command buffer. vk::CommandBuffer CommandBuffer() const { return current_cmdbuf; @@ -125,6 +343,7 @@ private: }; std::queue pending_ops; RenderState render_state; + DynamicState dynamic_state; bool is_rendering = false; tracy::VkCtxScope* profiler_scope{}; }; From 29656563259be924e04dca02e5f2a7c63f27beee Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Wed, 9 Apr 2025 00:54:39 -0700 Subject: [PATCH 09/27] build: Target same CPU architecture level as PS4. (#2763) --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f3d4468f..37492eeb3 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,9 +54,9 @@ else() endif() if (ARCHITECTURE STREQUAL "x86_64") - # Target Sandy Bridge as a reasonable subset of instructions supported by PS4 and host CPUs. - # Note that the native PS4 architecture 'btver2' has been attempted but causes issues with M1 CPUs. - add_compile_options(-march=sandybridge -mtune=generic) + # Target the same CPU architecture as the PS4, to maintain the same level of compatibility. + # Exclude SSE4a as it is only available on AMD CPUs. + add_compile_options(-march=btver2 -mtune=generic -mno-sse4a) endif() if (APPLE AND ARCHITECTURE STREQUAL "x86_64" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64") From e3b1c041d0de657795e8753cea34da8481c61c4c Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Wed, 9 Apr 2025 00:59:33 -0700 Subject: [PATCH 10/27] documents: Update macOS version in quickstart guide. --- documents/Quickstart/Quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documents/Quickstart/Quickstart.md b/documents/Quickstart/Quickstart.md index 9c6bc5a6f..55825ac7d 100644 --- a/documents/Quickstart/Quickstart.md +++ b/documents/Quickstart/Quickstart.md @@ -24,7 +24,7 @@ SPDX-License-Identifier: GPL-2.0-or-later - A CPU supporting the following instruction sets: MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, F16C, CLMUL, AES, BMI1, MOVBE, XSAVE, ABM - **Intel**: Haswell generation or newer - **AMD**: Jaguar generation or newer - - **Apple**: Rosetta 2 on macOS 15 or newer + - **Apple**: Rosetta 2 on macOS 15.4 or newer ### GPU From 5abec2a2917a52cf01f2ef9f5c9e3e2656988383 Mon Sep 17 00:00:00 2001 From: Dmugetsu <168934208+diegolix29@users.noreply.github.com> Date: Wed, 9 Apr 2025 18:06:54 -0600 Subject: [PATCH 11/27] Enabling Depth Bias Explicity (#2766) --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 600c205e3..5aae43cc8 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1096,14 +1096,13 @@ void Rasterizer::UpdateDepthStencilState() const { } const auto depth_bias_enabled = regs.polygon_control.NeedsBias(); + dynamic_state.SetDepthBiasEnabled(depth_bias_enabled); if (depth_bias_enabled) { + const bool front = regs.polygon_control.enable_polygon_offset_front; dynamic_state.SetDepthBias( - regs.polygon_control.enable_polygon_offset_front ? regs.poly_offset.front_offset - : regs.poly_offset.back_offset, + front ? regs.poly_offset.front_offset : regs.poly_offset.back_offset, regs.poly_offset.depth_bias, - (regs.polygon_control.enable_polygon_offset_front ? regs.poly_offset.front_scale - : regs.poly_offset.back_scale) / - 16.f); + (front ? regs.poly_offset.front_scale : regs.poly_offset.back_scale) / 16.f); } const auto stencil_test_enabled = From 37d4cd091c0ff3d534380f686b986a5699da8f8b Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Thu, 10 Apr 2025 16:20:01 -0700 Subject: [PATCH 12/27] renderer_vulkan: Make some primitive state dynamic. (#2764) * renderer_vulkan: Make some primitive state dynamic. * renderer_vulkan: Silence MoltenVK primitive restart warning spam. --- .../renderer_vulkan/liverpool_to_vk.cpp | 12 ++++++ .../renderer_vulkan/liverpool_to_vk.h | 2 + .../renderer_vulkan/vk_graphics_pipeline.cpp | 41 ++++++++++--------- .../renderer_vulkan/vk_graphics_pipeline.h | 14 ------- src/video_core/renderer_vulkan/vk_instance.h | 5 +++ .../renderer_vulkan/vk_pipeline_cache.cpp | 4 -- .../renderer_vulkan/vk_rasterizer.cpp | 20 +++++++++ .../renderer_vulkan/vk_rasterizer.h | 1 + .../renderer_vulkan/vk_scheduler.cpp | 14 +++++++ src/video_core/renderer_vulkan/vk_scheduler.h | 29 +++++++++++++ 10 files changed, 105 insertions(+), 37 deletions(-) diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp index 843bedb20..a6ae0c304 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.cpp +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.cpp @@ -156,6 +156,18 @@ vk::CullModeFlags CullMode(Liverpool::CullMode mode) { } } +vk::FrontFace FrontFace(Liverpool::FrontFace face) { + switch (face) { + case Liverpool::FrontFace::Clockwise: + return vk::FrontFace::eClockwise; + case Liverpool::FrontFace::CounterClockwise: + return vk::FrontFace::eCounterClockwise; + default: + UNREACHABLE(); + return vk::FrontFace::eClockwise; + } +} + vk::BlendFactor BlendFactor(Liverpool::BlendControl::BlendFactor factor) { using BlendFactor = Liverpool::BlendControl::BlendFactor; switch (factor) { diff --git a/src/video_core/renderer_vulkan/liverpool_to_vk.h b/src/video_core/renderer_vulkan/liverpool_to_vk.h index 42da7aa06..fca0a8378 100644 --- a/src/video_core/renderer_vulkan/liverpool_to_vk.h +++ b/src/video_core/renderer_vulkan/liverpool_to_vk.h @@ -26,6 +26,8 @@ vk::PolygonMode PolygonMode(Liverpool::PolygonMode mode); vk::CullModeFlags CullMode(Liverpool::CullMode mode); +vk::FrontFace FrontFace(Liverpool::FrontFace mode); + vk::BlendFactor BlendFactor(Liverpool::BlendControl::BlendFactor factor); vk::BlendOp BlendOp(Liverpool::BlendControl::BlendFunc func); diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 7cd4bd872..354e22331 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -28,6 +28,15 @@ static constexpr std::array LogicalStageToStageBit = { vk::ShaderStageFlagBits::eCompute, }; +static bool IsPrimitiveTopologyList(const vk::PrimitiveTopology topology) { + return topology == vk::PrimitiveTopology::ePointList || + topology == vk::PrimitiveTopology::eLineList || + topology == vk::PrimitiveTopology::eTriangleList || + topology == vk::PrimitiveTopology::eLineListWithAdjacency || + topology == vk::PrimitiveTopology::eTriangleListWithAdjacency || + topology == vk::PrimitiveTopology::ePatchList; +} + GraphicsPipeline::GraphicsPipeline( const Instance& instance, Scheduler& scheduler, DescriptorHeap& desc_heap, const Shader::Profile& profile, const GraphicsPipelineKey& key_, @@ -75,19 +84,15 @@ GraphicsPipeline::GraphicsPipeline( .pVertexAttributeDescriptions = vertex_attributes.data(), }; - auto prim_restart = key.enable_primitive_restart != 0; - if (prim_restart && IsPrimitiveListTopology() && !instance.IsListRestartSupported()) { - LOG_DEBUG(Render_Vulkan, - "Primitive restart is enabled for list topology but not supported by driver."); - prim_restart = false; - } + const auto topology = LiverpoolToVK::PrimitiveType(key.prim_type); const vk::PipelineInputAssemblyStateCreateInfo input_assembly = { - .topology = LiverpoolToVK::PrimitiveType(key.prim_type), - .primitiveRestartEnable = prim_restart, + .topology = topology, + // Avoid warning spam on all pipelines about unsupported restart disable, if not supported. + // However, must be false for list topologies to avoid validation errors. + .primitiveRestartEnable = + !instance.IsPrimitiveRestartDisableSupported() && !IsPrimitiveTopologyList(topology), }; - ASSERT_MSG(!prim_restart || key.primitive_restart_index == 0xFFFF || - key.primitive_restart_index == 0xFFFFFFFF, - "Primitive restart index other than -1 is not supported yet"); + const bool is_rect_list = key.prim_type == AmdGpu::PrimitiveType::RectList; const bool is_quad_list = key.prim_type == AmdGpu::PrimitiveType::QuadList; const auto& fs_info = runtime_infos[u32(Shader::LogicalStage::Fragment)].fs_info; @@ -99,12 +104,6 @@ GraphicsPipeline::GraphicsPipeline( .depthClampEnable = false, .rasterizerDiscardEnable = false, .polygonMode = LiverpoolToVK::PolygonMode(key.polygon_mode), - .cullMode = LiverpoolToVK::IsPrimitiveCulled(key.prim_type) - ? LiverpoolToVK::CullMode(key.cull_mode) - : vk::CullModeFlagBits::eNone, - .frontFace = key.front_face == Liverpool::FrontFace::Clockwise - ? vk::FrontFace::eClockwise - : vk::FrontFace::eCounterClockwise, .lineWidth = 1.0f, }; @@ -122,16 +121,20 @@ GraphicsPipeline::GraphicsPipeline( .pNext = instance.IsDepthClipControlSupported() ? &clip_control : nullptr, }; - boost::container::static_vector dynamic_states = { + boost::container::static_vector dynamic_states = { vk::DynamicState::eViewportWithCountEXT, vk::DynamicState::eScissorWithCountEXT, vk::DynamicState::eBlendConstants, vk::DynamicState::eDepthTestEnableEXT, vk::DynamicState::eDepthWriteEnableEXT, vk::DynamicState::eDepthCompareOpEXT, vk::DynamicState::eDepthBiasEnableEXT, vk::DynamicState::eDepthBias, vk::DynamicState::eStencilTestEnableEXT, vk::DynamicState::eStencilReference, vk::DynamicState::eStencilCompareMask, vk::DynamicState::eStencilWriteMask, - vk::DynamicState::eStencilOpEXT, + vk::DynamicState::eStencilOpEXT, vk::DynamicState::eCullModeEXT, + vk::DynamicState::eFrontFaceEXT, }; + if (instance.IsPrimitiveRestartDisableSupported()) { + dynamic_states.push_back(vk::DynamicState::ePrimitiveRestartEnableEXT); + } if (instance.IsDepthBoundsSupported()) { dynamic_states.push_back(vk::DynamicState::eDepthBoundsTestEnableEXT); dynamic_states.push_back(vk::DynamicState::eDepthBounds); diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h index 7ffd14064..59230ae46 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.h +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.h @@ -42,11 +42,7 @@ struct GraphicsPipelineKey { u32 num_samples; u32 mrt_mask; AmdGpu::PrimitiveType prim_type; - u32 enable_primitive_restart; - u32 primitive_restart_index; Liverpool::PolygonMode polygon_mode; - Liverpool::CullMode cull_mode; - Liverpool::FrontFace front_face; Liverpool::ClipSpace clip_space; Liverpool::ColorBufferMask cb_shader_mask; std::array blend_controls; @@ -82,16 +78,6 @@ public: return key.mrt_mask; } - [[nodiscard]] bool IsPrimitiveListTopology() const { - return key.prim_type == AmdGpu::PrimitiveType::PointList || - key.prim_type == AmdGpu::PrimitiveType::LineList || - key.prim_type == AmdGpu::PrimitiveType::TriangleList || - key.prim_type == AmdGpu::PrimitiveType::AdjLineList || - key.prim_type == AmdGpu::PrimitiveType::AdjTriangleList || - key.prim_type == AmdGpu::PrimitiveType::RectList || - key.prim_type == AmdGpu::PrimitiveType::QuadList; - } - /// Gets the attributes and bindings for vertex inputs. template void GetVertexInputs(VertexInputs& attributes, VertexInputs& bindings, diff --git a/src/video_core/renderer_vulkan/vk_instance.h b/src/video_core/renderer_vulkan/vk_instance.h index 04b68c1d0..6de419041 100644 --- a/src/video_core/renderer_vulkan/vk_instance.h +++ b/src/video_core/renderer_vulkan/vk_instance.h @@ -292,6 +292,11 @@ public: properties.limits.framebufferStencilSampleCounts; } + /// Returns whether disabling primitive restart is supported. + bool IsPrimitiveRestartDisableSupported() const { + return driver_id != vk::DriverId::eMoltenvk; + } + private: /// Creates the logical device opportunistically enabling extensions bool CreateDevice(); diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 17a1fdec4..bad2a549c 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -283,12 +283,8 @@ bool PipelineCache::RefreshGraphicsKey() { } key.prim_type = regs.primitive_type; - key.enable_primitive_restart = regs.enable_primitive_restart & 1; - key.primitive_restart_index = regs.primitive_restart_index; key.polygon_mode = regs.polygon_control.PolyMode(); - key.cull_mode = regs.polygon_control.CullingMode(); key.clip_space = regs.clipper_control.clip_space; - key.front_face = regs.polygon_control.front_face; key.num_samples = regs.NumSamples(); const bool skip_cb_binding = diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 5aae43cc8..30102960a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -949,6 +949,7 @@ void Rasterizer::UnmapMemory(VAddr addr, u64 size) { void Rasterizer::UpdateDynamicState(const GraphicsPipeline& pipeline) const { UpdateViewportScissorState(); UpdateDepthStencilState(); + UpdatePrimitiveState(); auto& dynamic_state = scheduler.GetDynamicState(); dynamic_state.SetBlendConstants(&liverpool->regs.blend_constants.red); @@ -1132,6 +1133,25 @@ void Rasterizer::UpdateDepthStencilState() const { } } +void Rasterizer::UpdatePrimitiveState() const { + const auto& regs = liverpool->regs; + auto& dynamic_state = scheduler.GetDynamicState(); + + const auto prim_restart = (regs.enable_primitive_restart & 1) != 0; + ASSERT_MSG(!prim_restart || regs.primitive_restart_index == 0xFFFF || + regs.primitive_restart_index == 0xFFFFFFFF, + "Primitive restart index other than -1 is not supported yet"); + + const auto cull_mode = LiverpoolToVK::IsPrimitiveCulled(regs.primitive_type) + ? LiverpoolToVK::CullMode(regs.polygon_control.CullingMode()) + : vk::CullModeFlagBits::eNone; + const auto front_face = LiverpoolToVK::FrontFace(regs.polygon_control.front_face); + + dynamic_state.SetPrimitiveRestartEnabled(prim_restart); + dynamic_state.SetCullMode(cull_mode); + dynamic_state.SetFrontFace(front_face); +} + void Rasterizer::ScopeMarkerBegin(const std::string_view& str, bool from_guest) { if ((from_guest && !Config::getVkGuestMarkersEnabled()) || (!from_guest && !Config::getVkHostMarkersEnabled())) { diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 02c24c7ec..54bf3d253 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -78,6 +78,7 @@ private: void UpdateDynamicState(const GraphicsPipeline& pipeline) const; void UpdateViewportScissorState() const; void UpdateDepthStencilState() const; + void UpdatePrimitiveState() const; bool FilterDraw(); diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 6b872bdaa..a48d93dee 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -288,6 +288,20 @@ void DynamicState::Commit(const Instance& instance, const vk::CommandBuffer& cmd } } } + if (dirty_state.primitive_restart_enable) { + dirty_state.primitive_restart_enable = false; + if (instance.IsPrimitiveRestartDisableSupported()) { + cmdbuf.setPrimitiveRestartEnableEXT(primitive_restart_enable); + } + } + if (dirty_state.cull_mode) { + dirty_state.cull_mode = false; + cmdbuf.setCullModeEXT(cull_mode); + } + if (dirty_state.front_face) { + dirty_state.front_face = false; + cmdbuf.setFrontFaceEXT(front_face); + } if (dirty_state.blend_constants) { dirty_state.blend_constants = false; cmdbuf.setBlendConstants(blend_constants); diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index 880bd4b04..7709e1d41 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -95,6 +95,10 @@ struct DynamicState { bool stencil_back_write_mask : 1; bool stencil_back_compare_mask : 1; + bool primitive_restart_enable : 1; + bool cull_mode : 1; + bool front_face : 1; + bool blend_constants : 1; bool color_write_masks : 1; } dirty_state{}; @@ -125,6 +129,10 @@ struct DynamicState { u32 stencil_back_write_mask{}; u32 stencil_back_compare_mask{}; + bool primitive_restart_enable{}; + vk::CullModeFlags cull_mode{}; + vk::FrontFace front_face{}; + float blend_constants[4]{}; ColorWriteMasks color_write_masks{}; @@ -254,6 +262,27 @@ struct DynamicState { } } + void SetPrimitiveRestartEnabled(const bool enabled) { + if (primitive_restart_enable != enabled) { + primitive_restart_enable = enabled; + dirty_state.primitive_restart_enable = true; + } + } + + void SetCullMode(const vk::CullModeFlags cull_mode_) { + if (cull_mode != cull_mode_) { + cull_mode = cull_mode_; + dirty_state.cull_mode = true; + } + } + + void SetFrontFace(const vk::FrontFace front_face_) { + if (front_face != front_face_) { + front_face = front_face_; + dirty_state.front_face = true; + } + } + void SetBlendConstants(const float blend_constants_[4]) { if (!std::equal(blend_constants, std::end(blend_constants), blend_constants_)) { std::memcpy(blend_constants, blend_constants_, sizeof(blend_constants)); From 6ebed7ce69a54264454c122a1f6f0d84f2fb800a Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Sat, 12 Apr 2025 18:01:39 +0300 Subject: [PATCH 13/27] update submodules (#2773) --- externals/MoltenVK/SPIRV-Cross | 2 +- externals/MoltenVK/cereal | 2 +- externals/date | 2 +- externals/ffmpeg-core | 2 +- externals/fmt | 2 +- externals/glslang | 2 +- externals/libpng | 2 +- externals/libusb | 2 +- externals/magic_enum | 2 +- externals/pugixml | 2 +- externals/robin-map | 2 +- externals/sdl3 | 2 +- externals/toml11 | 2 +- externals/vma | 2 +- externals/vulkan-headers | 2 +- externals/winpthreads | 2 +- externals/xbyak | 2 +- externals/xxhash | 2 +- externals/zlib-ng | 2 +- externals/zydis | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/externals/MoltenVK/SPIRV-Cross b/externals/MoltenVK/SPIRV-Cross index cb71abe30..68300dc07 160000 --- a/externals/MoltenVK/SPIRV-Cross +++ b/externals/MoltenVK/SPIRV-Cross @@ -1 +1 @@ -Subproject commit cb71abe3063094bf383379b15473d39cb1144120 +Subproject commit 68300dc07ac3dc592dbbdb87e02d5180f984ad12 diff --git a/externals/MoltenVK/cereal b/externals/MoltenVK/cereal index d1fcec807..a56bad8bb 160000 --- a/externals/MoltenVK/cereal +++ b/externals/MoltenVK/cereal @@ -1 +1 @@ -Subproject commit d1fcec807b372f04e4c1041b3058e11c12853e6e +Subproject commit a56bad8bbb770ee266e930c95d37fff2a5be7fea diff --git a/externals/date b/externals/date index 28b7b2325..a45ea7c17 160000 --- a/externals/date +++ b/externals/date @@ -1 +1 @@ -Subproject commit 28b7b232521ace2c8ef3f2ad4126daec3569c14f +Subproject commit a45ea7c17b4a7f320e199b71436074bd624c9e15 diff --git a/externals/ffmpeg-core b/externals/ffmpeg-core index 27de97c82..42557a704 160000 --- a/externals/ffmpeg-core +++ b/externals/ffmpeg-core @@ -1 +1 @@ -Subproject commit 27de97c826b6b40c255891c37ac046a25836a575 +Subproject commit 42557a704720d1b7d85c03bff0c2d369a61848da diff --git a/externals/fmt b/externals/fmt index 8ee89546f..64db979e3 160000 --- a/externals/fmt +++ b/externals/fmt @@ -1 +1 @@ -Subproject commit 8ee89546ffcf046309d1f0d38c0393f02fde56c8 +Subproject commit 64db979e38ec644b1798e41610b28c8d2c8a2739 diff --git a/externals/glslang b/externals/glslang index a0995c49e..ba1640446 160000 --- a/externals/glslang +++ b/externals/glslang @@ -1 +1 @@ -Subproject commit a0995c49ebcaca2c6d3b03efbabf74f3843decdb +Subproject commit ba1640446f3826a518721d1f083f3a8cca1120c3 diff --git a/externals/libpng b/externals/libpng index c1cc0f3f4..34005e3d3 160000 --- a/externals/libpng +++ b/externals/libpng @@ -1 +1 @@ -Subproject commit c1cc0f3f4c3d4abd11ca68c59446a29ff6f95003 +Subproject commit 34005e3d3d373c0c36898cc55eae48a79c8238a1 diff --git a/externals/libusb b/externals/libusb index 8f0b4a38f..a63a7e43e 160000 --- a/externals/libusb +++ b/externals/libusb @@ -1 +1 @@ -Subproject commit 8f0b4a38fc3eefa2b26a99dff89e1c12bf37afd4 +Subproject commit a63a7e43e0950a595cf4b98a0eaf4051749ace5f diff --git a/externals/magic_enum b/externals/magic_enum index 1a1824df7..a413fcc9c 160000 --- a/externals/magic_enum +++ b/externals/magic_enum @@ -1 +1 @@ -Subproject commit 1a1824df7ac798177a521eed952720681b0bf482 +Subproject commit a413fcc9c46a020a746907136a384c227f3cd095 diff --git a/externals/pugixml b/externals/pugixml index 4bc14418d..caade5a28 160000 --- a/externals/pugixml +++ b/externals/pugixml @@ -1 +1 @@ -Subproject commit 4bc14418d12d289dd9978fdce9490a45deeb653e +Subproject commit caade5a28aad86b92a4b5337a9dc70c4ba73c5eb diff --git a/externals/robin-map b/externals/robin-map index fe845fd78..4ec1bf19c 160000 --- a/externals/robin-map +++ b/externals/robin-map @@ -1 +1 @@ -Subproject commit fe845fd7852ef541c5479ae23b3d36b57f8608ee +Subproject commit 4ec1bf19c6a96125ea22062f38c2cf5b958e448e diff --git a/externals/sdl3 b/externals/sdl3 index a336b62d8..4093e4a19 160000 --- a/externals/sdl3 +++ b/externals/sdl3 @@ -1 +1 @@ -Subproject commit a336b62d8b0b97b09214e053203e442e2b6e2be5 +Subproject commit 4093e4a193971ef1d4928158e0a1832be42e4599 diff --git a/externals/toml11 b/externals/toml11 index 7f6c574ff..a01fe3b4c 160000 --- a/externals/toml11 +++ b/externals/toml11 @@ -1 +1 @@ -Subproject commit 7f6c574ff5aa1053534e7e19c0a4f22bf4c6aaca +Subproject commit a01fe3b4c14c6d7b99ee3f07c9e80058c6403097 diff --git a/externals/vma b/externals/vma index 5a53a1989..f378e7b3f 160000 --- a/externals/vma +++ b/externals/vma @@ -1 +1 @@ -Subproject commit 5a53a198945ba8260fbc58fadb788745ce6aa263 +Subproject commit f378e7b3f18f6e2b06b957f6ba7b1c7207d2a536 diff --git a/externals/vulkan-headers b/externals/vulkan-headers index 952f776f6..5ceb9ed48 160000 --- a/externals/vulkan-headers +++ b/externals/vulkan-headers @@ -1 +1 @@ -Subproject commit 952f776f6573aafbb62ea717d871cd1d6816c387 +Subproject commit 5ceb9ed481e58e705d0d9b5326537daedd06b97d diff --git a/externals/winpthreads b/externals/winpthreads index f00c973a6..f35b0948d 160000 --- a/externals/winpthreads +++ b/externals/winpthreads @@ -1 +1 @@ -Subproject commit f00c973a6ab2a23573708568b8ef4acc20a9d36b +Subproject commit f35b0948d36a736e6a2d052ae295a3ffde09703f diff --git a/externals/xbyak b/externals/xbyak index 4e44f4614..44a72f369 160000 --- a/externals/xbyak +++ b/externals/xbyak @@ -1 +1 @@ -Subproject commit 4e44f4614ddbf038f2a6296f5b906d5c72691e0f +Subproject commit 44a72f369268f7d552650891b296693e91db86bb diff --git a/externals/xxhash b/externals/xxhash index 2bf8313b9..953a09abc 160000 --- a/externals/xxhash +++ b/externals/xxhash @@ -1 +1 @@ -Subproject commit 2bf8313b934633b2a5b7e8fd239645b85e10c852 +Subproject commit 953a09abc39096da9e216b6eb0002c681cdc1199 diff --git a/externals/zlib-ng b/externals/zlib-ng index d54e3769b..fd0d263ce 160000 --- a/externals/zlib-ng +++ b/externals/zlib-ng @@ -1 +1 @@ -Subproject commit d54e3769be0c522015b784eca2af258b1c026107 +Subproject commit fd0d263cedab1a136f40d65199987e3eaeecfcbd diff --git a/externals/zydis b/externals/zydis index bffbb610c..120e0e705 160000 --- a/externals/zydis +++ b/externals/zydis @@ -1 +1 @@ -Subproject commit bffbb610cfea643b98e87658b9058382f7522807 +Subproject commit 120e0e705f8e3b507dc49377ac2879979f0d545c From b0fe1532f706e3cbf8f2f431836e71a902684d85 Mon Sep 17 00:00:00 2001 From: JohnLogostini <55333109+johnlogostini@users.noreply.github.com> Date: Sat, 12 Apr 2025 13:09:21 -0300 Subject: [PATCH 14/27] Icon Updates (#2768) * Updated the trophy icons to match those on the PS4 * Updated the Windows icon to have less harsh aliasing at smaller sizes. * Created a correctly sized SVG client icon. * Remade all of the link icons. Remade all of the icons for links to a standard 1K size and fixed all of the crazy aliasing problems. * Revert "Updated the trophy icons to match those on the PS4" This reverts commit 223c70de132276857393ad372ea2d02329d06bab. * Created SVG versions of all of the link icons. * Update REUSE.toml --------- Co-authored-by: georgemoralis --- REUSE.toml | 6 +++ src/images/discord.png | Bin 68549 -> 43672 bytes src/images/discord.svg | 24 ++++++++++ src/images/github.png | Bin 116428 -> 43288 bytes src/images/github.svg | 22 +++++++++ src/images/ko-fi.png | Bin 39500 -> 40174 bytes src/images/ko-fi.svg | 22 +++++++++ src/images/shadps4.ico | Bin 74814 -> 410598 bytes src/images/shadps4.svg | 105 +++++++++++++++++++++++++++++++++++++++++ src/images/website.png | Bin 90853 -> 73633 bytes src/images/website.svg | 22 +++++++++ src/images/youtube.png | Bin 39404 -> 33075 bytes src/images/youtube.svg | 28 +++++++++++ 13 files changed, 229 insertions(+) create mode 100644 src/images/discord.svg create mode 100644 src/images/github.svg create mode 100644 src/images/ko-fi.svg create mode 100644 src/images/shadps4.svg create mode 100644 src/images/website.svg create mode 100644 src/images/youtube.svg diff --git a/REUSE.toml b/REUSE.toml index ad2bc3678..d17594e4d 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -62,6 +62,12 @@ path = [ "src/images/update_icon.png", "src/images/youtube.png", "src/images/website.png", + "src/images/discord.svg", + "src/images/github.svg", + "src/images/ko-fi.svg", + "src/images/shadps4.svg", + "src/images/website.svg", + "src/images/youtube.svg", "src/shadps4.qrc", "src/shadps4.rc", "src/qt_gui/translations/update_translation.sh", diff --git a/src/images/discord.png b/src/images/discord.png index 2fa455fd10a5cd8ae4df56f2f35e642b4c0d8b38..9858f217ee8f81b93ffce550798b0447620a8ea1 100644 GIT binary patch literal 43672 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
WuRsi#XBbUGnn|v&DT9 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 N002ovPDHLkV1j2Ep;rI^ literal 68549 zcmeEv2|Sfu*SDlPm5?M!IwVtO$CxQo$UINs;NVEcW1cdH6bYF_NRp5#AxTIQLWl@S zrjTU*)@is)clXotKJWMazW4q8(n+psUwdDB|M%K!uk~MRD^yka#I7CGI|v8}cFD_0 zs}m4xip2j#Y=t{#tNEY6Kilo)^qdF?cJ9Id-9(U(L`6WL5{}i>#px<33Y*!T;Xs?) znPNEH&e+4#1Oy`DZuV%i(-<7m6l00C6{Vl9sHR6^%|+>T_>{Pm?4>YPSUC?zjE0A@ zrkTfSGa++&aj_jDZo<&O84M1MbUR~X>m=+ZO8>cCVfYz;o0A^-`4QY{QTpTf7b10) zRFP74ju<2#2Oql`7Y{d5K!}5z4<*FS&4%RR;^yV#=HlcLV&~=-MhOUW^CQ20(TnYX zpF|wZErivjWxu`-u0-jra5#HmPEJ=>R}NQR4m(FnPHrI~Ax7h}(O+L*$92a3uNT=meZ>w?TVasH~3{SUp{Pzeg467Mf7nVbFfB70{?o6qAhH{-_>t=rae(1cC(!Z{F z=FC6zTpjaW27Wo}FFjYsIN3QnnqlDaUv}LIC*uN>|5cd&jfP}gU_O4?l)aT5&d$lo z?jJl0q`;U~SFq zT%A~cXy@zGKQ*LeXO6XS|JE54=m7X=atjG_p@ez3*|~UyxxRMhhbMn-1GJ7g8i)S3 zTKVzWAKHQSDXi*fXYOoPvWpR8_W+A1k?0c-yOHXasF`oa|1s=D*}z0 z;pfuM@rOshwV;7<*m(C_felvdBo^N%y#9lW?;XNF@%iq?x}RVE_ZQ*i0Mw7LvMP+y zNsRmRRR3_}d%NGBltVjdW1X<3HW*Duw5^jp+7V-G<}Rk`=#2TR@;^NDuNqTv!8qDG zVr_9^vS=HpUp4jpiNCj_gm%LZKm+T6`Me`QubeP=#V1PtO@I8gg#bW!j6SPQVOKGf zppXy;*XJ)0&Tlurzv26%R$|;-AUga!e1Zb}-yXI43HdJ#INM@zVyaj-jE&Q`2S4BX z-t1pc{m}Ctn)(K|stqh~W%L=Cn(uY-UBXZM#tFs`>T3bWgOoek_SeGk!$V2{8SJpX zeNGQ!V`Jy~+s7nrz!3TMQ(x|G?C@U@{Bn@r5YTW%cDBJGzq}s#`Td_e{NqC#rsQw!;Kfhui`x5I>GPeREByz6{R1ZW zF(@est7B}V zEHrIlW`Pkzqs-a)_)O94-1wgaP0a+^EqE|y0w@ehh=&^l^vlS8sQ$O6RUEOPl{d=GAYxzsD`F}cTf2;nh*6sdV;C^|wLCHh0$jC6)5I}23f&RA=s$j?tSm_ zmm2sUe0ks(BEn^6E+}ATA;@lKibAvV@}v0Jg@izcxwtWcf@od=UOv2K^|$K({0>(u zjO|YrBMOX0)HjRqOH-ep`sYTR>@0Auu<;+q?;l@HM|m3?XD6H^-jKl?k375_Tt8Zn zU)tSR@toYH#J8I@bU;)2nu`~-w#v&^ANww$Dg_T>=CrqS!hK;JkT|;yB`&t+UpWQrck%x=r$03L^PK)q z7TbSsv;Xg@oDELuAC>cMYxsXDwqN{MYkLehjb9M|Un-yfuGNI!a{o(e^)KE+P#DDp z4CXi9;y;$pe_~U(C!amH(fzX#T~R|F$5$ZXQ1?>+c)z4=d&` zM3A4ii~o_s`)^yH0;U*Vb3Q=}b}oKCFkVbiX6$G|QyzA-nT3S_m!KIJFYjju<{|4#4?WKEU4;&$pfJ z|LVWrhxC87*^Q0;dC5jReslE)uHOK(vG@;M8}azf)gQQi1JK6eKX7ft<2P4-;Q9?f z8;k$IwGofsT>XLTHvnxc{sY%WJbrWa2d>`$w6XXPTpRKD&D9^cegn|P;y-Y0#N#(t zf8hEJKpTtyz_k&N-(3BH>o)*xEdB%6Mm&CV^#`us0JO3A4_q7Z_|4THxPAlB#^OJ4 zZN%d@SAXF84L}=<|G>2okKbJVf$KK_Z7lu+*G4>kbM*(V-vG3+_zzqg@%YWvAGm%4 z(8l6FaBalnH&=h)`VBxEi~qp25s%+o{ekN@0BtP(1J_18eslE)uHOK(vG@;M8}azf z)gQQi1JK6eKX7ft<2P4-;Q9?f8;k$IwGofsT>VS9c6|R0d+@6%MCo1O_ve|b^Ph*` zy@xcDQ&%D&@Hhg$y)S@(U~wJ(9U~xc<{}_?XF@h-_?K~q!HfIF>i=>hHBy|Nj*qvVLf!^5w4jZ+;u z6w)#(m8pI_PdlJ?P=X^)3P~m*mb$Ip;r*f)6%9>bw~Z`M{KKg!j<7oVt=qP7i-}#3 zruQqgd*zR&dRgYMnIvR$zEPzlGlhSjZAgc8T}{m<5)u-V0$sB3y4%&&7t70qJ}fLq zkrBPc2{S~?oAc}^CLu{zWkyo$K-=1q5RmN%vR_?thSHV!eBZi{ANiA%nUkGc51a2#zxC#9TTwGn%SYx;Z1K+*^FCK zcXxLhOIW)2>IaQU*H_+_v&*ZU<~-Po()4dk3$7oHYg$ssOg|c>i(|oN)1E zr6Czz`&2JJOL|D`W_UXDh4bg1dy5%2TNHIPTR7EDx`bC&R#F{27*u0&UwnN|d}w_o zbv-~f!>_7J%&@{`SJ$mmo0ZzjT&HQ*R$r|jEH@<4(9pP&kno^6Q6Q~-?EUP>$(wn3 zFh}<%U52LmDsJ~qeriu$3-nx=s~;Wn zX8F}RZHM*V=;&y?pdk^=l;Kt=YBHitxw*M7`uge~J|wDIdUv$UkRz}b4RRgV6ciA! zdDv0tiXtO`LlG`>E*(+PN1{d%)od~7QlXaHK}NilTSSC7q}I=b3vrxmU|~6}YrLSW z>|Ap4LAOdHHxXJ`CFj!5o$k7omYu!r3DDbRi<#WMgYfPem-5 z(RzP+Ap@QPnc5n#X?b~B*T7(N%iNXt_~X95;ym%h#9KFeczUXF#6>AGMk!=QDrbYp zsIpN;HJaZqWMgDx)UpvMSbpZq0YF-eGGjW}dBynkB3agyW!$n#YBq5B^9i zvw|x#BTaFgFg8n$IHyc?7L9VlH#a(N+|tjp&h22;$raKeiv4a zf+bY?-Mnyz6^fYv*tlEcUT{9M=_`$Mk0wM?K7WQpPPlifA&|{`}vgp+h7_$>7inNS(b#{I@cI+5q zSo+Ok{pN>rB0Bk9EHFYfiX7RD;~nG9cU!IG@>@d~=-err$1kx-M98*l%b!Li95&{0 z#HvzgiLa3JQ7auhi;%d+tRV71pE|@yo>D@VERg;zk5YT4AxE4U6{A6JhoeZ#DA94b z?f#M1u)%y z5D31Tzng26e+)$(QEZf-nBIDQvA@#uLS0>5zhv5gQg(Z%WSR+cjKUkKd`V9CeK86_ zH#AxAAQ74wttR?X%7^AkNEayDl{rGz!zg67!|MR^N>%3P>N%Q16gy%_M6X-|6`-5f z>EAo49N+v#jwfD(ATk3h%o%2S%P5~|%kgsp)DeNqVVK3rJ(6^I;L}8i2~6}TJt}F1 zlP?SjK2>bL6NRSAP|j|TYr>32GpTsRDAbi!RrT+=Sl<_~_$Z~>g1yePwXC23O)k@F zn5W&07b{{u?g&|__IG@sK%bA#?>w3zm49vz(WYYkT|ttY2qr=v9<@d#2rIQaUl<}v zR@P~?E*1(#JF+!V!U#&Vb1_y47e?n6xtahtcw#y1aCEPDMk&Ifhs#{RoufW zqsA~HBY_AU@baKWfiz-wfsDwg*`%osd|X&KQ=t1Kwb^17I$Jw;&wz|*`OTXwOLzD3 zQdQDMbVHp*)l>#lotQi z0rBpAxadmt_OqZQ-_9=uw^|Js>z{FVbuGPJR(8dLicyOrZcm3b9~x$V#8D`v(VV_O zm(2o2O$vLhWNt_7`21aoc3cGd%GT}fyU7UY1Ua>fD_gC~_6Ixc@Ee92+bKZhLO+7Q40hQpFe*H#`$v|$0^{rMbhOjzQHp*}i zUY*OB?o$a_hy9T>@a$$a3Vc_CZyFLxB8d*+RSZUti@27XIHPL}CtK8QliM{urOJ$= z3YFgKSZ-*{pEwBOp07^JtD-XmlODailDPLPLx1a@Ir34O^G6Xl%N~~Id^UcbxwzMjY1~*prCEF zdd`Fs%{~jNH)pfP-lgemPRKg0M$t`%U*LC{NC|Kmtz7)nyAH^xJ+K}?(OY0 zgTJdenvZpIG+&CeBsPr{YLgMcBGl-xF3wQR zcvKp_N@r#zM1mr3i;z7Wo~jJ0+yr!PhD1qcEtf=Tc6d@}bBw526M(;`)R&t6; zL4MKsBwHWrCtHy)<%drCuicCpIyiImwL*6X_^s%10EE%+0iI;`hS+}(w) zG+PLq%xsfQQ$>KrK**>q)700oguOl*^EgN`lM%1(_@8Zl|J=GbO`4v&vZCTxaX|q$ zEZ?mPnU}IPSwV6xT^L=|*jA&m=a#$9>Ge}EZ< zA2J(pbSJ*=hN7MX>6p9Rgjtnm`!I)47hJF{1k*4`J4xkislpJU{q zHbra|76rN`9v&VgVAH*Sb~J}egtZ>8|=004S-W#RVLLKp_MOIc;l9!hk7T!E2O;s1> zQCdyYAALon-a#uEEq5-Q3{kTsWXpZ~V*TXao}L7cwUtHP0$rNM5l3&>grk~9a0-cr zKA+f`NFAc-; zL!Z}?2gn`Gi}W~BTNc_-lh?2wZ5Bls7Z(?L{XCb(NtbG{8&8Xhih2Ti#@X#LcUc&Y zz|6n*qnl4pXI4m5&OTUY>L8M={OWxD(9Qx~oAaZKYmVhF4OnCD%o=GVtINn&U(1!J zoh2d2%RhNq+FJZ@7(ML!6OHC=p!v2E`rW_WZBy0P+gsr<*;CvloIEAZ5eE-gvqU#) zZc?pokh%~dIb_t7Waz?7 z>xmhU)JfXASN3SnMutfkEQb}RYvE5{%^x45$M^yyQ=TCS6}rJjA( z#kUICDuPlAOY!U6>#Y)48224$6d9uf(wXg$WLI9h`>aj&md^P}nD8VvFP+T1lxN6M zD*8~9`aHw>vApRcfex5mm(5a6WZP~^XKn+vsm~g7v&Q6EZu{7+UAuPSrz_5*axF+U zL(f@|W*L42xAOHEIU$|fEAT04>aomWZTofvfr{jTrE4df(Hf-7#$Q!kJ>5LwD9e`~ zX%KU%D=iE0yvLHv(C4sB<9*e4SJ#(+S7fBHS zNo-MKY(IIN%%3_U>miq7viTVhbT?nF0=8bTV6$IUd3$==*-d}!>FLpAjCP1sIAT_s zn9oPis(_s33ep!GXIQ;~;NTCvLmoixey7Sfk1p%OoF;2#^XObHh0Hu-bR!sqqeC;F zoT3{)JQ#7z<0dYuo%4#7O9esSZ!=K)T0ElBoF_)%hzc8JVsCeMd2xBUJ1=#FvUEmk zl?{KcU1^SrnL~*NBax2XLDpo~9Oo0U`PrStFRf7aS01KatTXlQuJx2cwk;3|8J!saoY2M_H|623OF{dZ{xqv3n@;^swZo)*LmBM}yNNb!+qTVvz^u`{Fkd}K5wJhK zHDIu~X~g5{+{(ChF?E|2N~TRY1qRiK2*gl5(#q{%H2^pB>Z zn{FE}P|vxloZWpcNb(jvUf6NY<%34OIUcR!3t$-UEIT<)E+1YLVbsPn^HTh z5KmUl%~JATGa}2*)5>S6r)~DT&#crgYLxG)p5N8tM6<9jPkT9XsBG7T zAqA9D^c`bKWL)o@300OQ{AUX;zP{_Z`#6nORzOJt*ITyz18w)7KnaeHM^~A5fFjq= z>(pe8k@c?`03%>+R0P=vKcey&{w!>xd>S#8HgOw0>R4JMHJz6@!LpgUwSWpoYdhouDZ9MB*c^G__G^l zE+|j78H5H!ZmGe%ZyQ;bokE|?m)AQt`wC<-%d|kS6cipU4GoRGaI#c;dpoIa>?v4$ zEc6&jZp zwrO1OS69nTh=T@H^R&lSSG|pellhmu#Hy9E55O{69(wld8E>-kzI5!}&M96{{azoG z>~+bmw~Wr2rK!G61ct$@&wIlXqtM?XzJ9M|47Vny_ME4d>qy}VgkRE0fut-f7xB=A`XPZ7 zao@FY%a)W?dNRcMy*sw#CQ)2&kQn0~>6aBqjItr~4=-`mueQ@c=31CE)>eUou!kh1 za?xuo(VS;2IVFX*uy@k8a}3u4MCUoVWU_|xO-k)t)Dbort?%t@ZTnAwYFcZ}IAKgg z=*OKhsfbYXsWc9ydrwvM@hf%_Skk7Qof>bQUq-t|@} z)KyZ#KBY3!_I#QxG1p?sjSlM%Q&UqW9C1Yn%@(Bq>&K5D*Y@5wNXUv-|8)K=S;Mv? zqzPGc!1Bc_`VtPdIHs4-YSXf7fy{1%Z7nzYp_}$aV4?t5P{I9|$#|sq5tNfcc zS6rN&=Jazkg?VzNQdlG#0?!VtQ2C{)UT2DH^7gj3H>vhnz1w76yq0E^4{A*Kgj^t5 zgC`w~4b4Sm2%^*pp1;pL>_>K`B_)htJ}7$_pB5?R%LqJscED?52=wT|+ljC4xjXU3 zH3yf8DUaiL#3qC?!L&^~%M+?D;_wryMtl@-L7hk`AZI>eAKHC8r+h_?0qaG>7}H5PcaTy+Gi|Hn;U(-r)|ik*6&MKA~k%_w=SRVBL}cM^b`Ls^A=Q zI~ZV2qZBCp@VeK<@Xl8tXU1o2ZJz=SU6i2Ju0Wrs^b!$DMwTS55}3{mLRoc0HTC6b!0DJXG#^`GB=QT3bLt`mZ z)s=$PE4S%+LGMCPJ-*$ z%D&V9S#@!7@$~HCihZ7T#$}NUopo~eNC^GsRFHX|I<%r7+6g9Hg6g>)cQVx*-4>=! znSnaLNFBkbaQ?U?@&;_01A-)MO-uX&0@aH%^@n^*@7-I0Zq7D^O089@8*FK_1%dFI zc6E1p)G2x(RCsZD$wnD)`7@%qchADGZG*d`}`Uj(~B*W)e*vp z%?ZXJs`BNAov_HL4LQ21fwIFy$Z9Z>SH32aRHOLdA=R@O%+RYdHa3c(=?zIZZkIXgO`B>KKgizgF0C_FD=jYOGtTW0JWi$? zQoAWE-3aJIdLqXlWKbU1UI$4+@?U|?U%fhM=ewK__C<6$v${2{Ohu5a9N_+Xk6gBQ z)0_zGl7eSnL4d^iyzF5!{zPLdR00iM#^cvc2CI$<@D(B$n5k>+fuZfo9;=q=Tc$mw-`bV_Y(qP0<8e&2ybbw zzj$c97T;78fLKP2CWEg#??P&CIJ1(6p1-V+X*`Y-wzjsuQRDE^EKfVJ(z-kDiI)5O z5cE+gE~=Fepq1ArYXY`a_w@E2ICJDmC#{gWOR)MpD}d6$xEnZkEq76WAb6HiZ1SBMELtb2ZXKWGPx-Lj0@^E;P_l-k1%^Q!RF zCxKpZJi$Y9LNBA$3QT~j(~Z$g)sIIU@5*M>a1qaKu6NJ_3uYLtK@kK78Te6^b8lNS z*4N;haY*f;pSC}?nCx~$7RpvK;qKC0=~ zF%EV=Ia--ab?&K&39q&HgSG4UZ_|gP8g|cGu``p)%*Yk93Q03TQ+H1{Im?{3sxaiJ zkWpLVk8VV!w(tVuP$iooUqZ=5PFOB6TvNyfOdK~Av5({W+UoiYwDn3lL(Mm%^%>36 zMM2pe)WIzl441{OM_0sSm-DhX9LrcGvj$E3Y}F z;}mtkdhB&iVIp!&xw)xa09ond_U8EX#Kg;c;D?I$gJgE)p^x%$O41fuH&@XoJ8wta z;&;D8eO+BwL0B&CyfzC_iXvk&*iCD)6m{uc<9TWn^T0q;fVnXo!hF!ESWIF&uyN_k z??v*#yq)u19XDRbtCU@W_w{$yht!;OMOru`xBNfUWTY#@nrPz|Jye%OsF%~Re8wT?Da)_0Pzl0u_f*Co% z5Qrqj=J4r2#GovJC_VNK=S6*l|5-T(9#z&DAE13LEG)7fb3NG;md>HI&-e{Jv0RkM zMeE`)D^yrzrRZ(8aF9(1F2b8MS@&LU8W{t7X>AJM@%#|c)0&ML8tbgD9bj=V@4uuF zn3ly^*gYY^M!EcSXoh0a#k0elhaFh#9WxSQgnl$7yCoQ-{j_tpw9GZX7Ec*HLAh_A zuhVpY<*O}(e&A(}MYBb=ubc<5wkA8*vyjY#IuH@e7$rvxYGnm%^P_L)Jz6b_Dz9Oe z)RS)T?wh1*LxHV+pNp6(81(IlJncCUYhw-$j zP@N-g3^oE~wdZy~3_oXbL~8u6P-vPi^TPk#42Vxa?RQDj+E#@jh+4 z^sF=xgbo8)>r4oB9O(*}bbYmk_j z=)3-=Igzt{>`un~Xr46P{LLtxt9xKRy$}I9^kf6sV*21YLI}_eyso{9j2bs!gQ{vY zXSJsZ0U6QH+Zxxj<-$a}J(@J!)8IZu+5PT; ze9Rl50PS5}7jz5^464ESI81<2nAV{uSErJL2Duxg=*eKS1yzE-p^o z_ru#(Ur?O-*E_5gkEvwL4>oFea1vt4L47IHM~%^2I5{~jar!Pcy>g(5vlpaU&uSlg zy$^E%5v`EarmS5?Ug;9~MBwQtE;e}y0IbvXmx>&#*4!0tZ$W=j^~ zgeRl+_$Li^yr}9p995nAS)_NLOOhVGdo;T7g>jXad)!c28HB<-MN*h3WVBi;w>i?D z%BIoe7s&Nf*ZSUY$O z@-bdjgDYxLZpg17X)~Xo?15B17XY0yi;`nP_}_=P^ivU!4{tqFTlP^OI>ZTD>4|$K z=OZgr%Fc@rP8J|NZN71zyAGHREPt_ z!PnZyyq<6=&Wli2pKml5-bbXKrwyAnFp50!=Y7GINQ{Vx$Ond}z=<@}>YMS)0w+qTVujog#4glfOmgWeqwyU z1Ftfgf;)M8fclqJd+y5CH086lI2xall0tRXDW=EMmZViLR;JQuR5I<^MEE|=D&Vck zwb&??@`&2sIY)L*5D^i@#Y+<%Hvu;GJUCS&@88?M7_?u}&Fz@=MvnSXF-q_;yxq!c70KNee^^n z0k+VDKI*Oa$BAxN-{sy{YrViecvTvSUn=a?M=LY#!Y>FHPHDoHxi=7~=A|Nb52-Dv zcQAxF&uc%qEdlc$ePw|C``2~hb^-zdmS7w9K3ztpYy)Y)Fp^>kVo;6tW@cs(FqAsqMGa1i6CYKaScl>c5Dg{WoZ47lz5|x z6T`SdihIYcZIpQ7lnGXExe0bYkYyE>m8*51K7Hzc`_`&w3}^dhZc&yaZrN(y;Sh%Q z9BxXDjna91eB4PTMPw1L2_Qm#IPGYt;9aXt67Xf8vz>?_MvmbT_>EPtihHM~r!N9? zXv!EZ#KXT3K#piCJhXC=mVZn8#KZ*gD^N(5crPHPY2;?!FrD*|7C8gmZv4=Q)hI49 z5EtL^5dbfZXC`-)9U=sMwLM zj4Aaa$8*E`?mmloT5{`wyH16t$eDD65Ys)8@pP?ik58zBZMF^`ZWY9#D~gJWe&dGJjY!3OaFuR;LKj}oJNCxxj4H6u>V9dbd;q8NH)A)RNI z^C=oisy5K&W^7G95aR5F!K84m~k>YlXK&P?>!@j);`l(}h7=A6Xl@<8J9pcx- zwh=HUHv5o;zvD{X?~i-|oS?Yp(uc7Yyelvq%RD1-D>$f6=~07L&Z1fqt7el3gHdls z_n|W%(t!IWwz0AC5)u`yJjTtv`?VkkE8@YnQ+pIM)fY_&bGpW#gOBk(Pnk`(MP1i(UL-o!@+my|^z)1q6cj)_6By|<$@UN1dd1Ic z-dqr)>%hV4>Vk)ob@Gk+fSn{cLKhWbU(6raHdnwgOv|9Xja+>3A;~zONXZAa+XI$NxZEazsWhIPm{9B-ca9Cbb?esN zBgO->w>#YvJ>QFA(n_W(;_u0SeA2bzYIkpoTvc7V%tEna zdi5e?(kKZhe+0&Nc5Y;3!~ik|Ua~S5Zbv*nH^Lf;*i<9mc`k{@Ev4&>om~r2K#dBl z`c5G84-iCV`|{<>dk2WOTIP1# zI8MJ0ODSB_ahSBc2KkCA&ihR`b*M`;dY+^Dq&*l1Vs|CQBDBQXB*};-p<_vXw(E~= z`12Q6*GAKss}_>_7xcGDwxfuS-v;!JAgHj$maM$MTyRr;innH@^wzmc$2{|c1{^&n z+SX%ay|UF=MxmMJsHmu3%J3t=EJ#7N;Jn9b<(M{OYD;x0sRb2*N&DD`5AWW+8wCqX z15(zGt{T3Zm*n3{chR=*L#{G;@&kACbwiFeD;>=n&zW|fWsFxOfwU&ysTnuz6`ytB z+EJ;ks{IDwW@rp`Qn~V}>qUx_({?tHC7O$Q%cn z_mV_=WkCn^QjF)`ycS-tEo0;2reD~U2(UHT8sv4JfwUhtV~-RE;bhAtzqT6pazhK) zWEy~~PPRe`-->+wZx} z5W-FkTWK~}D0gFf8Z}aM2?>A(-?L{=nbRnVm)IdllzcGA1>P<`FHDh9jhR9X9!KjSf4-(_N<~wvgEmyC5 zp1*K`e>(#W$ze#VgzuE$bWw6h_#`%`L!?iX0y}{%HS!Ti$-zZrYso5{(QD|RzNb>* zou{3P-4pr{$3|H(f)nlnVldb!-gV1^4Q^mp3~WM5z(xV+s(CDlGmvsWEE9ZhQc|k z?nfLDFe%pGL;zuY(D5*Tus$I;2avpY_38v0B~XZVKB;mHkqVjMSOODYal;f?84r1VE}?HGXbT->(JwC?m!@TFdSHcmU|MkBqNrxl1rji8$LG_ls}G5# z=F3y_C+@N++Ao`-=IlXT?{Fn4=^-ey1K^mY4T~&?eR&BK_%^$3SG*O zAiK0=Kl=0_q-y5L)81D(yc@W&Yww*hS|xHcCHWI&;KLIyjiQ!eAjkUD4LLvxE(9)+ zaZPEe%s@D?7-cYrHM{IjCcdoAc|$`^6MJU&y+h#LtO9FvxqhhJVdzl=Uukb89YRuS zGCnmyLU3wgX}=>)2qd(=>g`Q51S9QWgzO1vHS^wr%(hLtYbq)#Cn@wR)=Q(SQDIlI zu;B6v(p<2hdOW=#unqynpx(*g+QGBkHV}gWg6EXMEM!;;*uK0Eb~HGNk&WgTZpOI` zJ6y7lSP@l-=d_*~)s~F)By+qZrd0L-{(nR?dXwwaOGv`3zLCj!suXkwd?1M#cwiW_ zSgIX)*l-MFLzvpx<;$~<;i&6OcSBAZ zj@_rr`|c<-l1~kvVqxLrn~e&weU8XJ#pAEvps;qH0oEfvAsHe|k-=3g-c@a@1#CNW zJ9fY)wIu|&4TVg9(}Hu5h7IYkVAV`aPYZ}%hR6|qX5$s|5)3Y}) zC3s-FvaJYYD?vJ`1~bLos^a4L?uQQ_W_67>JJINfH*s~wXU$NC%dCQu9tO%FPmZB2 z+X5RIdiszpce3mwl#+nP>CD@jkodZF>(*yoUEA`zcESgk(ACE5ywFw-rN>vkCc>@Kw9iY7Uv^&5-hY{+B`N3`o|tv?_<^2Q4a}9ii(N@@Z{UE zF}3;rW4l9#_ruDE&kGxV(72kp9Tp7`TBZY4L`97MQ0$#ViZAnC=7$*B1x3d875DL1T6a&3&8cYMx|HVbM)&7ma=up5;t3I$TnAzKt0Y1$*gXl)0N+Z%d?eOR)7lp=5 zu4zN&W@&E(SU9hHiccd#YC%IDtc;kuMAAP-{hVhHJLOJFN=kbej+;n|#_qtLIh~V! zu_Pm+w4^|MJRaeJxgifFqK`sIrjdbx3hDi15wg1@WD`SXtwRcDi;$VsD(VX@KI=`r zi3C8j%~gBMzk3Q{mYtPGhuX*Ib2|AxDHF}!+OwVX=u_A`MZf@=16YbgS`Iw7y`X#W zkWT2>{E~&$WAHER?cX=VQ6v=VvO!SslzUj;N1o{Zu7tsMYr}>X4yxdq_wTuE`|pK9 z&NV2$4yl(-14jrY?CdyiovH}V$zcImlfihl6=in5id(lm+A7z$TiyTR{rd!rOiYmH zl#ufP(#oI%kope^=`w;evY=1XR6(~2JBsJ+P?)@Vj^Sz2>e8jABG~_cyng|UXMS*S zP~h<4!@#pSQ0~{879kD9=)rE~a^}pL70B1_f-U4M5^=}N?^0w({o!3>ic-Q&RJ62@ z1_n%u&Z^9!KrHU)Pv(U0j@dEvoWkTZ^9h!uBi?q!`rOBkg^!J4@fqrg%`PAA4}1F$ z(~`)jnNV#du0<6+zQ&dEA;EBKI&->FKAgA!-}|uM$u`kDKAcQp-fFp3BmPw zJ2|PfYr1lLNp;DPPyJG11#ozDVf2pWG+?#BTf7@O@Ir8FyMN)fF7MCo=R=YN;)ykcY%-$;}xkG#Ppiho-6b8+8XSJBfsdFd8yK zt_{0K%FGTn*211Q;#dQ-W@UxQ$jG>I<;wkr1_ZnsGAJMd31-YQrQ_I&H4GEWeGTrq1eJW6=5%x6^?f`H)=1C*kuvp7i+i%B$x)pJLm{ey=$?^8~1P>*mgkj__$9u`(Y zAH{H&c5Vl3;)%xoNC=1=TD*kF0wa7qPm{GdA1J@$WJrYM9GAhnbCdHP4s&mmU~S$v z;bPVwpS-*IPSI>k3cA9aGV=*H#74pJ0OV1q=ZbqFBo3*7FJ8R3|LD zlAF=bu2y+(i$2YlY>=Z#95UB#m!O!X71vZO(|+gEt^In6xrtskNKL3p)N_a#$wRw= z#A2Eg72~i<2(B~r>lz2wTkz|7fx$sE-f{!OXV4xuvNhEry42IRH2jq9u8KZeHa50_ zq872uGHO8Wz;**R9mqW#ba@7OcBi{-_`yOJD7py1+|fVNUJ=5@kdP&;b%-ODIgeA?_TAl*-<8Xn z9W6qdNuBF*aNFHo@(R0XcWvEl$gwXtB!rufF9;4%pnZK0)tHc-K7CsE)G7So9a!?9 z%&wZxkY~(JY|kvdT2vR%`OuVm8WzUArV(n4o(p6;>AZ4I+ICn^m?;PswdmEqKUCTl zD1(+5NMAhG6!TD2rHZPjJacvd0`g#xnp#`$fHbiyiHWrU6j<1hI&Er|l}KgHbn#ju zg%V$`Ue$}3%h%ut3zYjnWWvnLiw3rQFf2$yGP>(@!uo*l%G&mTOR>GyYX0_R4{m3v zvy+8A`WQM=SNU!2U?JcExE@QAvB|{ToCw|qz=q8pV{uOkeEDiGoSK4+>hAoL!bkOB zoNaC7V3FT0DgtXV;Bd%2rZKcEPS$dN@ks?p16qRM1WkAyBj}KQda)6e|Qf<`>v#>*5AJ`F~_xX zEiKG8W?T=|e!6s%zPv1b4QOT{no)_Uk`%KBDV1qnLwjnuhxDtEjF^zd4vt(v4M9;i zaV+MT*t+fZwz7LwP`V#7h^NEYO@O5t-1la-G(O05bK z@d^uv;e!O9)|RIWZr>(IZRygEDxsWA4oVj}+Ek)3=?^Tn-o-%cfZsi`?$jYQD6Nwwvuhp;L zhr>!2DN=IW518{Bz2tL9iHQ|CQZe7tXDcw(U)lTN+?M0_VPc{@sEX~g^hXK(GiKu~ z53)Aqz&RR7KYIq5hYx@q(DgxYxf(jaq@o zv{-+p+cI^q6hgt=v#K{%eB(Cj`IB1mmF%23^{|+A6@tj7K0f$0m!r7@G6T-l57i^C zYwa%?_msV=JUj^oQ!>Plc_B;H)ZE-0RNe}fw4G%!VEj!unhJtgfBe>sen}5vf}JXz=9eQ~nmu zVP{kzSAS{VzfO5W2?3I))3A?{pCt9+xCOGs@kRpq$+Y{8>AMDR3?>{GfG?Djd9WEciBr#+6r2 z!kbIL&eGhCD3%-6!%Kk!UKg5#PY(Zx057aFkrxxr#;f;JnAoNSrbL0G$l@F|Q@n z=6EjmSnnaT8}?={=(I2Kx&-;`%GrDHhv~q~CPNV2uB`0)VAz8(j8eS$F-5Lo@njwk zZy?esvpVX69#TbBwCP*Xq9G4>9MiP;Nzmv3I~!H=5ABHSv@bA)MVq)AO-?nYUF_R$aI^(r*wwtx$Pu`1&M>bn9@x&`$WDdLR z)f%~N*@pr_Kuk^nHRB&Om;gOj&>S*&+moI^$Q>9 zq7TTL_oX};cx%C^$`g;XwY61-ScX`#@`;m9zIRtm?@n%4X-7fI2Vaz&;^g$SiZ<)s z#7igT5yLj8+ByT~@U|_y?1ZtgalH$r!eD^1wA21RcmKI*zVbd>uh~W>T_Yn~WvR;s zt+OucMDJ#GtTE}7p}-m7HT&geix8HuLM$p_SpMU#!x(W~&w2ekZAd7_vosUnKt&=E z=c(Nzx2@VHDshNk7~+Dh(ynT8E1V)d;c=um+<~=Hxd*$)i}|8n9#TC8Q&-3as(EI< z%h=4*6B2V?zwq-o?XtU-^PR`tL`2|(C5}Go{UI6}MMzqL>=k*P+>TpCX;eksFDE^_ zrRiJuAc$n)DBviAfCRs`t5A>idpD6X&jpUDm*tz|nw(AJ_oO2Q?X(NLR`uB^Usib^ z03QKXWc|~p%JnUW-zqZnHRR~B^*|bg6*C1jKXpWJIx}TO45t&MCYRWKIZF%+67qb! zz?{>8h>Z0X#o11M zm$-}5_Y8O(slIDM{rB7hz*`bg)d_QibgKA$ZBwEh)-iBAVHNmx8!s;}2u|*+5bZIs z;WyABQfG}Z?67veuAWo2$?ER*IyBI<2xr!Nlm;=XgC|X6#uVqvtf;(DC+FozK zvHbm5cB-kf^Iq`VqU5AIoR|cU!4w&Y&>pfuQ5#(t(sobbbRO};IcmWImsW$5jjd66 zd3iH%-j9xS21nF(3#qWi8ya6LxE&7MsCI7M^XC*| z>nlz`R~^`Q)Iry z`XiTV#f~qK<{jXCFot^#Tf+&~r!gcA*QPQVa>E7+frT1;6mdXTPp<|{TK}4>^fP3u zPFW1;kPt5l32qt|Mdd2_UDKPdyIQMsl(2@RGeamcOP$3I4x&D`C{m`Mb@kMBl*zyL zNiVi;c$fj-RWR9TvF?41PISn!x1NNb#wMl#yP6LlP&naJ1}#AYHjyo(?D+7>jGGtY z>~4vox~iUiaLP38qZUM_;dJMqy&D{1+qK=_L~zm{d0^zz<&sXDTy6J7FEKnbQfk{L zS-}v}dBc(3&OiKuc0hx5F@8_Q>q79`TREro`UzCwtTp(Jn?t2dueVwW-W8T6B_g~b zZmt&#NA4c?KK&|QX*Wm;Z122XoJz)1k z+Q#mzGCYnNC{yehety>hIw!U`ya(*~`{q0>YgKK$kk&%nX+N$HNwRpO&ob3JSOR$# zT%A1!=V%);_Chncb=Ia# zcZ1J_K~UJ_L{48JQFxtyP|z0qfKG&Mjgj>xCo|+HJyj*Z93~0;2EHG7)^PvRBTFL_ zhYzzaorBYLYp?<|fw;^IxKB}^c=5u88-?m{pa|4_3Y>C#!EXI%;VVd{F{5n2$Y~^OG(WKv3>7toAtwj{5A@+rz{k`-X2yAWMM2(&32ngoDZ2 zdD$_DkwW%1EdrL`GH_$*N>$?-6BXOIE08q3kV$>||vnJE@SB9kNLh zvXW7~-@E61Ki=~^&-t9A|Np*!4eP_Rr z+T0Xl%0NL$Iq`FD5dQ8n&Occ=tWIf!jTYTJ8nMqd(NR=L=)vLBj#r$V)K3=5*zhYH z46yK1xS7Z%4;Blk+b_?gHPkT1;*x2f+7e9}f;j_1Q03DE%WZ<+$=~ln{YJF>H0$|- zK65XxLwLIgUC|xX);BQHLqap=T8DHLW6d{ z$5!&C-lS<xL8Z-zv>?IWK?aakI~RW!=g$X&tko>8wFLO0^4`^-Dce@6JhW}#}?w7%8)@f zagX_xU|h?&6m=)6j-=N6;nzsxGfyHZ0(Aw^sX|onSX}j-Q*`5wU+pg<<4?Z7&WOUr z2`EFA*D7#l=bfM0oQ|n;?AyKSW$Xf7HXJCDj130Jk${I>mAT1csc{cVideK2@Snk> zrY!Sz;XlR(Q=m5}A^=l5H2K{b<)#kUV!Ys}ekM^BWxW{|77lE18qeR#JWLbx%wb^K)|&y3_p$3aqbSJ6%o07p>oZxPLE9s-Ck}77D@zRvLgD(d_*XVzJe7+O zjLWl9tL5nqPJ5bI|CYS!?oRhw?WE^XS{)nvRT}hw&pH7n+zY)$QC4@f@$4oLIO1ynd3qq7ax8DS z$wVx%%E(Q(P=69ipfq^tWi*7)5FK;2#1`4U4K_g1^G;}IZa}Jpv&i|+_4i0xA=oN3 z$6c7c}g5p%Y? z#XJ`SQ>}3cxx=xKWD14q=A9$i{-G;ibp8AL4T6G#7!NYYUVRR&X2D<8O_Xf}l#N6f zFtUKIT7Mp23gXL9*v=B>XVws;OG~~}tJ>rSPLhL}nVInBYrR)yrV5jwiZ^9&kxD+@ zH|s`IBW8|!6-U20UIiMZ0NriS*xZY(cPul^v%`c^Eo}80J5H_W;p<-Ceuo8o72siKp{>%m5(2(R=j>^e|Cey zWdbVw3l}cnmbp7PcYOH$!3(sqnd+RP&@T!`E7=IfQKa*K*<7fFH2vW_vzFvPD;y{& zZ%i$F9&6J7Iy^M5z5d}kBN4wt?rEc847fb_`4h&i_lvhzf1LG_cPm4Tc~B)t_WCX*ld7J6yA0x z+|1w}^H-=|RcK{*9Axg1Jmcy`snUfoA%w4~ZwxF(3c=8C{Wc$0fS9s9Zuz7jBC zSFz@{#sm4SliUAGnm!Lm9U61}D(>2E~I2-PknOS}a)vnXV?Qh8MK*|mD2Kb&~=}+ff zjW`l!inzEvm z$vmm3st$j57nhTlC$7`hRuyRU_H%v6QDCy|*UN(|@(c7MP|qGO?%&cPL#B!#ZurMd z7P%;r&uNYfM9Ni~p3V!~*WU2{{S^U*5D5X##*4h9?$nlDd(&Ia7WJxfP_7$ReIwW4 z+mY7s5MKyStIn}3a%ZnEl$ZxK0;{mcjir*y5byyM>;hlx4q-8|4b%Dy2+3iJChxuXUf?W?45$u z$DFSuCoJ>1JbCpB4PSMQP1%s?s&eX`If=9v5aBrVkt}6yW#v!Rc<^ELv?oyXLUr1V z9BuAH$C*MCw6dcrwYkfYDR9wZ#qk3&wFt=zD&>YEd<~NCG3UBz$89c{>Zy1SJuoqp zjLV_Ar+b)={rAY#;uQRoCI$2m?;szBGxtW9n|7&Tk7cnzAZNgUb9t_5QGf24A8Yf-HGbmqXl44XqZb|FfO9oSSiJUXW!W82T_ zd34Tu;dvgr=Pn(NIQNJ?ok+{9efuCr!A*s-N8pfR@~0coZq+7MNHjtBd_7Lt&um}6 z3=y{^92+@IGdYF_5CRII87;~1%Iekzg~=R$4=Z$Hz~MGu_3V7_m&i#VTn#ObR-dj4Gb zC4%l1OCQyU=E6W8xi9C zY;9`|+B5$3b-3dK@T3Nagdo}QZ(r&Q#2z*Jo|uX$<_Sb&i2CR9z#nm?I7y|GYleA# zkc6mnJ^+A#NHARV;JiUoz@2@}8O%D`Oc1}sdGhh2dU0T(w(PAq#S27MQ-?Jz9QG;) z;b~@u-Xa-M4eQ76f*gl{3U>-t7tsQs1H)bI-!K7Gs=Aw8y+*`n3dVIH)d^OSO%@TH z#adp>C?Zlh0}>JwEgKpdxH2#C%~I}u;K9sM;$heXFHK5W89hoqxA}EhR&w@>`sCu- z1}z}13iT;q!6RU(43VFUvmroe^_K=8DJE3Ch3WLU8r(W4Nx6AJp36<3$|3E8}_ zXH~>_+m{KB!NlY}ISGbo`>3#0gO7AB9@+_lp7kq{r3Mni!{bJe^G0eXni4 zXeA!8Z6gb{PW^h$JF|2@ajaTsHZS2_A@So)y+7sR*N$Vkxw%)aU88KWput@@=LH2^ zWW*BRgK|V- z;pZqsGssFMFL19!v|gnSZ72jy4@>`3JXWBG1nMib`CX8>2d)0rG78SJfA54 z!qEtQ8;Uo9gjV_xs;RjrJ>ST>qZB2W8t}*dfJt`r&+knT;)oS;aO{jU6z%kELRKVE z?W6jFGv*MHd2^z1l1lZW913C6M| z?)-%Y>?Ld@{8*fNgcS|of*>qoYq!`5+zJcwr7&aL=DODGs?yBZ+?V9RId^kmqkaXA%-LGpp#wlHsYwNq! zSzMo22Cc5gMKHLE9r^5dT7roZ>OJHa7{yVOXzVo3>B*gP?vHPu-m9FaYrap*L$T9? zUP;ZyG_Lh3Are?wVa)#f>f!CAD8qmg2MW-Nk={SQg}3r6%V&c_!sExbM>45tp9g$* zcUzz{S^TwVjtm_HDMFY6Z2wqxtrF8C!`M+u7V-6w=zMwaYZC1f_{hIveb(vm47T=| zRD11Anhw3~ZbyCf^eHWA0R|bAMGzFGsK37Ey?hvr)9EQT$;eRl+O^;IfQN9);ja-* z>E9R+-TUd+VY>GruA!F)-`Gm-I5YF6D!@ek1gK~N^P?yz=bTK5s!pYC3yW+(A}7K* z|Lpj?>GSs*Y%XMR%3m4>G!j02%3q77=}@3Etu|=@0D%Ov;$7o_tRZ=DQ2b_2T|jgG z!|rs$JR)WB@7mu#m$z#1A1|PgdLYqlSaySZ+`dm9)}T?a-K`gXUH-e#2ascDy@33w zJ?%Fca*QkKg`w?5seuX&yq&P+5Z|SXE6J>Pg`l=#CnIS^I_K_tuRnBo?5=?FqLsEg zFv$(PcDGA)dvU z|I2dCVs}1r0!Lwy_%-eG#|lpTNd-GH;pVbcWoeu5&kt!d@k(=56=9$HY?k@lhb*(- z{{7dlUr&y2d@`}+SP;Z^Q1jW?|BsS~a?wFBSJiNFBww;>rP#SV2*(aU?7A6Oh*^bZ zWBCkUl^XTqvk^z>%F1hNA*RLn!QXqweHo1|A3`D{N*%)1p^uN~qP&zN8@|L8dgTq*;&(<+Q zH6)VI(bcuwLD|}qRKAsjKu#jkl}K?V&ZZDw&GeCQi%eJM5ycRtqR77z$?X&C%hNc^ zP|*+)7qsNQ7z%O>(UZ1P#blZkblqbX2;vNY0hal{uUU7ZE)PRj zozvrGIvDHfVuFMks?dhT(YhU5aC={1qnY_y*!U=AXvC&WBbpW=UWCRooO~ki<7-VS zQmD1YVVv88S32CXE8_I5#G}OyuAIChV*rjv;jm^nc<{WM8s+vO8IC`|Ry~dMUzoA#aV0_7b+&?|k57h!g(-9bRtb-d6|V8cSE*)tVi&)? zXPwV{chk=9HlP=;>X5lP2V!l**&>&%T_IpsmY|;0`Sv6J_*X;oR~yTXMVJ@Q4Zyg_ znxS>a(%_%EaQ@hTU+JUoMAODT(C6`k$!;9N3$(@#yjMJXqcvSb*hABW9ZH5?Ki9=c zg#}59Wi@R!{-pC3~qv zTkq9fX%I_Vesy)qSuc{S;d-kVRcU&xqlMC)U3YfLHckwYy>%=DHpXbDd!u9D$ElvG zyl2|npFV$nONfm3`42jZX0&F}>4rxJb=u{=yv2K)v)Ove2ZPKMorKBr7boD^n3z5w;CRh8MIxV6O@qnoBo~T+4KHJU` zIxk7Z`a%m@ZxKQLNnaECcLCu>Kb2B4@nE1v#BFw@xk5AH8OPe8Zi#^2zKq(Ot2QT$ zjUb-|7((2im6e-yMs6oO4=bfqp{~S%QRTV3ix7w|q$OH)WS=z)e*b-n-{x)JhWn)V|X-^I*tP?@0BzhiMmYceDu~ zH_e-;OOd#}!pbXE`cX4y989yQsHnR3t?4nb!@;|7Y~b@#?ej;?EmfgB)rUYy{4epg zN!=xpw)n~Jhl*6Bgv#MZ!SXkUsuQ@Nkxz}tqVVy{>)Rz3r3VVsP`|>OrRNgCJ&?mK zy1orX;LggSe6hJX*2KG<#@DJ%p=gBvebRhQx!?eV@?dOlqiot^d}SY`GiH}mIZ`KI9swAcHSa+A?bQv^CUh>m7l zH?##crPyFr9$yrVXqqgq?Y(hQA)StIPSbO@*!?GWpL`^DTs?>1iXJzd_EWRaMWA~u z39YP&sz-~Tob~fPes<0J_hu?5Yiu(j>u#yP%j&gxbpRVQPI(vNf6^Xo?(50Y?D#x%xNxyqo4$7M>)()=T@}Ok33xYt zvMBO~eoZ3`?2vQ=mu_e~Z)hpqc;Wh9Va@;=kRV!&4L$HmDx5c6gK+k0@%pFn$ZH=1 zy|)1n`JeZL|E(O1=QuGSu{x^4bs_~3X8Jryfnn;Wv%3JNgrDQv4-OUe%yzN~GgXq6C`N^vL2$cEMV`*I{J! zhC{Kg6Ju#dEBi=BVhFq<0BZH%0coPwu)N?LB!Y7(~bO+pc_j5aWQ8&!k|%Fpg8WXjA<#0()==Flluk zy>N!hI5xiF`SFG|8^&kGIVCmVE^YmNn@M6Uu`S?h3eCNi;lgw8IQYapLMqcX@%iez z?x*DT*q)%3?TMDAeH$&FudQ-?KlC%yvORO%uL4O!CWuW{+&}Q;!wG|KE1M3tE|r)} z8+cD(e+y0h73FuZ)K7_V-+wJvmrtf$P%*JO!>*l|RuI8s5aZip>oAx)O=8q8KOdcG zgCh8`a^@G8nX6UH2Y#H=?mHx_0Y12nBeH1;!rpe2c1aVjp2z#>3FwMXzwCAMxpL9E8Rc5d1nwe5=w}hI24Kc9cm(?m#um)? zmhPE_n-5hf`sB5=q`S}Z4wen>1=yp^RW>WIC6%vY+gBiRxATAa1g=fZs|+uPXH%r% zEUH==t0*4u5ld8ssHYT>B4dyhv7)3uVVD3hEYKXeCjUt(E9 z^H$#eUG1rSX-V2f$1^8}5bPiWHiU7X|MPpX?GMhLxSwAtZ&XQL z_djU#%9U-ZS<6bCGKl%bpTYVw$6mR)58;Sc40K0DL;9?Rpb$7q-Dpad)4_G&{wN0t z7NNYRthnzrzJR_IS_1E3U|@Lt@ne`-U9{#`*}SJq#?em=u`#>wE*K6Sy4N@Rn=_{P zmPElV6)YEYasW=%!bhXxPbHOVqzXyBIsh;k0uTI}J424OD>n_43`F9Tk7zAD;DY-lsb$Lw<)U=LjFK%8n%u^h2E zix~$OjYU0mnRd%+2q&sGK&}wqHABmFzfK*orP1|%0rH>4Y2F|;WW}r6OjO>%eO2~V zfjfCFFagL%Fz7<>$m=wVQZ7r{L~W*}3m)v{KUY?+Kv@W|_^5EHp?6-Mu2jQy0^9|E zwB_y7by1U?i_7z{RcTVUgi4I%Nywa0^3_i-8-J)Sn5_X9Vk>Hm%1EW3zH*mAnp--~+1{d1D_MM9_hl|t04BH<9O>jaW+UM$rxy_rKqNXL!sLdm>59v8gj%8Liy}Y>Ly{v;^kUUN~ zQ&~gXH`9jZ&9`&RxRIdc=sc2o;=s8N2U6Ro>k(g8SX~{A*cg2tcbVg2M9)# z&~AEr|It76rNL=&@IZ(X8>Ry+S0D}nQU$!nP~Xb73NoEJdjy+~wdbE3MoWAyTqWBG%e?#?~m5ML4kw^6Km||CrcyIC&B1oKgPc~bJx#=MV8!Wpv zL0|i8C#dlF;Y*crPpsVT3@c#(z&=9Sf!QVg2+IuBy|Z4pRze$doJnDtipb$9?tfBj zn1?tXlB+g0*@&0tMt(n1bY$a)K7Z(D3v&Bx7|#DPu=`DQBz-3z>9lh>@hSj3gAkIq zy+NCysdzn@GjUIek=op;3d4@RKL5+Vzv=y|tlbocpyOyU<5{`wk0tIt)f&m~=+M~u zrdJCKr@T~h1G48jXyoGUfSfg1raA{xRB-v9ZWr@7SLFdprXN*-&)i zv2`GWC`c|1wMi)6=&jAUvS0o_zxO6>G=tnQ0^kN^(Y@$;*@BU@ii6P6O_hI%BLE6J;qyMOZ33*a-F-F}hEcG$<&|c9?R5>qnKBcE zy1&jdD#Hms<|?*`fUScFE`qljb43;& zPx||ga&(stEKI2XJ%ITaNYK~jrE6A87nhLuj9%rPTv~YN?CQJTI!)4s-7-bm3IQWN zgfASwiok{mGsFLo5mvgu6m9M!TK5t~QW2eisY_sV2z$q`@jbUTX0mW!T>ELQc{svV zql-VoDFy?aP-qa}5<#vkRAhve{}SKn1Gi5H1er46<)Q2X9Wn}S@UNw2enL+PeEoSZ zFPG;ry*gB1EV+&kH8u{`3xJL0h1X@Nw^vv4pU3##^~xc|wNuU|TF=g)J2 zc}4p8_?(+P%z6UwClL5Q1TYYz-$yRU7y|iJSi_^9GLtm~%%zj4{3Fu>;3**_Y;blj zFE8T@__tmakC^8U7^lwQ5Z)bS%iFej_gRF$k_IhUa)PV-pZjbK@Dkz1YiomTWFOcf zq%4F-+01y`5HVf?ams-D0QQ1^5F!kp&=A3Bz?u2&Wv_o#=%J`(TjR11#t|tJ-<)+^ zpVGvY`1xaS5@NC~KxfTU`uw_J91$tQYzA#LN=b%>>pQpgIv)J?oSLj&;7D|r4yUwc z#aYZW!g?YoGRQ8V?8LcsoIn&F$%G;Pp?T`{@~z?@>b6&{N(}*5?tqjDVgO}TRl)^{ zoQsE+&n!-sxj(M{s&X#FB^-iX;#Yy1f|idMI0d^Q+`xbj;6!11iPj4}2|T;lK|ta_ zjuV9wh&e)>#@!NqYJ$&<-nTfSoW}D~hLcXE{aF;AC{Dl#AH?XDetX?f&p%nq$55!_ z);24AjM7{K(>HdG{&#-R*FBzLTxU@(y>|+%IL=$7?E)$}hd_?wk?6MJS#4#!Wpniv z7{KN!+cwkK{r(m#7kw_;Hg|||D%#R|bSPB0MZF*mZP)>z5;qhG4`7_k2$A^5DyE^0 zHX(9r(L{aWalwbcKZ&;Ce%;5HvMMTj1tYd%JirT5U(1m*jP`}V1hfwRO9o+9E>zz>7{ zyhxy0aq@f2wV#Z`!itHZ$GTI6U!`>f3${iNOE@4gfV>6!qQg z!&khw7Ue$*1uJE+;*ZYlw{QFET49@^*>QLDEmNaT^hI&aaI8IvL&hHoKBG$ zo_k+nB6H@YmwMhBA9cN=VMs~NF^yBZ_yq4h8;W&($aj!mugNK9;ot$vbc{@KW(u8# z5*caM%4v$sp-hq_+ngBn=w%C02o$6IY+0@f@nCMCk6)4fXh2<>;L@?%c8pe-#72^= z##-rx@s>eFa^xXCrSy;a&98MnRA?Tf$~eQNx7&6jDU}n74YowpX_!)ZPf_ehnr2V) z3xA+*Wgv3xR9w;V$m|H@V-!RNnUv?`xIWC+W$epuoIB-P5Jfwt_$9U3DB)Q~47ViZ zy0CGH!OGH24coclya+v3<5JIKbL3(L0jc(_Z_F6JFxkDLJ7>W2?W5;;sZO~~e znX9_APH)`i+^)iV_*=>3b9YBq9mVvaPj_+}HWlUGy+@Ff zMAN=3@2{+AQ^o734DBrwB2!^D`pVKgcNQ`P7P5P`=jm9ekW*e>0CXOCHMYAx>-ZwC z42o~4S^SUj#pXB%okN%obp`;uW+4?0WM-nq??VN0@vTSHIR*Da+v}!|h4soM>upbz z8z8yUVXa&_H2<`IOaU$g?enQf*3}eLHYatJPFMSpAsaaP zjeS|cRIN+ge;2bq8==}^M=@8T&Kbp?>abH#K!BMe3_@vgBxgP|Dd6A6Jk88|Pd6ai z#CN`ulvJ-ypz8UMN3=h>ycIOA@KqGmt_$G_- z_6EK)`(Rf17J?F~$fmD~UW00+Zgc}m*i%k4LEgY)TdF}KXQF8~OHwoIdX&772EOXx}lrgRze>49RB#W{h= zAagn+uR4*fXGFti&P`Pi#Y^(cuH6DUj&tob?Z<_frVaOzY@YIj&Wbm1PCx z(==qN>ukB+aRmG9KIL$!#7w$;XUWDGzDolWruhd%jC!>O~w0yBf09Rv&;jOI(>}e&@!GX4 zOo19>v-df;b9nys+^MJ0+wj4`_uuo7*q75206`77d_2D!0n{h*4v)LJ7VxNv=|9(c zL$VED94R@7DMRKu*ug8P*r55Ae=nL7-l&-ShjK2O({~{~Sy3)UQ-6aysY!$O9VTqz zP@zPdp_%oiupyr7C0182>3K4opbq(9@t}M4Io;b~=_uA4|0u&ExVc`KzKJ|sB$}BF z(?SV<{l7Ns#tnMFIbajt!sCk8p8^0RqH{#Pvz@(grs=I*XHZeKvpxOvwY`|06>omf zDQ_$R89xa4!N;8d#~@F*Hwh$8(!&R^Y4L zuzgI?@c~Wr%d$Fm)^9N()Zy21^53Adzh~4yj2=L&3;0cfqJ`cQ5+hS*XBuSSfKi9C ztkp^Wbf7NpA8ty2>LvBd{!6R9s=Cgs1-d!V%-}(wmL)u=Px91A!oK~S|WOI(|EW$-c}By+d zf8T%xPFPSx{#RBPBGKyM4><`FCj3Ff_kx28NETpHsGh82ORv+=uzWSS>uzX=Fp*1q z6Cl*V%pny<-_Y<4z7RxAur`EZAl;<~ka+lko(_Z_T_AokvYn!<5PVy6q_^2^{aHsz`14}2GKh=D;LT}36R zgH9FNJ2vzawvT4Ah8))%ag&K6C2&ci-B@@{wW1FkFUGIDwk?G?6Aclfy^aJ{nsifv zUm@&RHGluyMBL<||FNJANpLdB;7644{lw{dIDOim zFvG*#gf1DmY*KXbQS^hit(QaN0`NdoU%+Q`#j^GFLpKO3ILCHzi-wTSt0P50A(Y>P>8%m;<2Eq#z4>KtQXm6 z(3L`%N93RoVTUk1BH$ft0wMbb+kh-F7;F5792cy0Xh<~VfF-hqpMz);>t=r5ad{M@ z#3-Rg#>Piya6}xhla6BVUQ=}3M6d*~Gi;MF=W@^+A(n>OJ^OAeFQjRinnQgClz~tf z5s$;;*AEtVcX#FkS{HBX&hX3^MJlMNslAz9bqq{>mE1h_%l+Mbd9rk)oses4F@;(| zp6I{h?rQ}|wc6~qmM?_iztux0i8n zh@z8y12+=Z2WSkBpWhEAN#68>AQGN4JkB1o^IUIBar~^Vy5XxphJ)J=6SfhJ^+J&w zR}L7&nM5Sqez|&laxqc@ZW6(}@N^M6U+51QD9rFOkl+I$1uRt1QV>r?&^kTL5-C{# z!ic0V0@?>{0ecZT4~}6FB7aoPesSLR+j7y&rbRB^^@U-{t;J9u`^*!`7RlJcRvhDL zoJ!wkX9Mw393Q4WM%rSqV^hRTuO_1R>Ckb9k(F%1w@*9o1vx*AVr}&HT@rVLm-0!;^KRf z+iy%htvWpAO=qW(_q$y&!Tm$d?9TJ&umq8``vaiv0iceAopO@*Nw@1K*&Zv7nW=Zz zFJWGc1L}%A*of>iG-o#A+$DC{ls~PgyYg@!C1pWDe!d)vb;@nuo@Z1v?a4}aOoC{- z_4CHikTDV9N%(I8%vAP^m70a^Z!tL0;n-yb_b<+V&`ktp26%~hM(|`4nq8Ck~ztRx|Fxk(P%64HMAIwu%VOar+u!<}>jDVCn%NOaOiG?19_Ef&xaz@sqFZ zL)aOcUzG_LmT}l2RRnVaj-K86v4c2$^m#Hl3!0xcsIK!Iq6?gY&C}kidRS6})^5tV z{3eM;kw`b6Do7<U|&2R-sW1h06*3+N;xYDsc6{|2d z8EhIJ1Re^0u*YyPxBf*_`=$Sp3|rpie^YBgGVn>zW&bGA%}IeX?mv3P-!SyjV8h@C z4+}*r6z=gR@_^SMp7zUt!L9EBi=;T{anRQozYc@wDB-I9pKlJA%OFidgZdrYVb!wP zYJDC|y}xq(IyEtfZ25>l|V%BWYz*jIv0!J$9!{`|Jgr zLH2&*lSJ+z-z@OgDBW}ApCS>F~=S~K8_g_?~J?!kFQsI6xUYKikuf=O+8tmN2z zY-6px?+k{EB^0GuX}EN5;J6}=Oe|w!`}Oqb;D%*kph#8cJV*O3B+!8SD^Lii-7)3+ zsZGU<8x|Js&P;i;e~N|pf-)~I07~oC7^l&U$zyVPa!&`>sh1Ym4?ar8?DqJ`6P`)e zh9f796{Z&QC`^q*v!tuhGNCL08m{`TUtJn>=OcbAgScpHz z8m`bs8I$@9?oJKN5JZ~oT5*3a)JVt{^y?gtIdNfqR}7sqU#vJyX9W^}v1USgWE$%g zoHH^f!=GfVb?`}aWG}MR3!s7|1Od3R@fdMk5LRBCQkdz5$AkpGB;1e0k`_X|u zAp191%D3){wc#g#cr$e{Uf@6nJ`ak8IKS6$KvmQJn?lUioKt%JN{(3sS*n}&OV{AM z2jFUexL^qtzky@vbQ6*8s?9BYnLk>o^`KyM*}5a*Ni=P0l4L@!P?)4 zz5i~G97CQBsLnnAggh9>wX@;6${Ps68_48Ysb;D%fzQ(5qtFl=Ejvm0 z!wcl+6$=!F8E{;jiFy{ToGt(}pQAUwZ?USuslL9jqD-O!F z3pZKv>@M1xabBKPny@x6WFS^KrtXYEYm3TX8iB!flg92OGrKT)2VHCL2_qO)1PUAzftg?f@jtahukcP_~>1> zZnDf-ak&_ji+ry-%+T`k@%d|VJaQ3;#l_o?^W7OTVnT-z}UXv#u3bU!~ zr#c!zTe0|J(#k0D&Fi^+PvAR2^ea9oQ3m1=ehqZ+q;iyW)WWed6S;5ras0+96ZQS=HdhB6Ni8N_>q7ZE#CM{J592mZ%Liw z1EGN%73DiCBvc}TB)A>ALI#>KJ_bRn5y>#S=+N>}#DKSwJV>;;3P#B*WP&M`xFD+2ll;hB0$V$A{ z#cS#|JJ+;ukyoW=l_zsm64F`Xw*o0h5Hy;cmCMWO@tny#;d?&gcp~Ldskb;FkzO6L zYA&wW=hy7LEA{GA#R4dAihx={hmni1IbjiJRd;+5`j5k(GUuvD!f8lPVjvCWz&*TU zRC6s}y?ATV<=jB4u5J;}9$%7}n3(vyveP0WL?c89ez1j9v$Rf%f4yB2y6|$B>|V_y zEf{Elh}{rhx(eQ)@7l_}O(fzAN~wv_pIS>#_;O9o@*N5u$51sC$zFp>F6A9R3N3+M zhAU-2by1OF4v)nMHx`8F~)p-Om`}x z3_Q3|aZy!n$ogSMRPeJV3qu!C#!B>46G#E+=32Ra@Qpr(gPUmgww^ECT17bro5&Tk z7{t2=@)bXQ3=Y25pghOC{u?Zz?n8PReUmaUIsil=mJj;9)VKre$@@pR*m_kc$`a{Q zW8N+E*}UagWE?Q4S4uAUVq9Y4BAzBg_!f!I5DV(0ghUY1c{qm`JZHRkgvUOkZwJ7$ zIR0)A(KbW1jvd($^&~Ab6qr>e@aNEyQf5{u652ZVfZAPOStpkULtnt zix+p0jWY(V5&CIKGsPrXkr=}s+ta=e@^JqV2p*H9*8>ds2wB_6KfBQDyRc%ARrsrY zsiJbPRpKrH6Bw{!^OEm+`K2R*m6Pe2?t6z?m={Dk(zLlzGK>=?%*t14Pyiu7Y0x{p zd+(nWJ)$GJ!)C1o+Kvx1u6&qxz}nIn6LHd|Pig=wkDvwr&!;X}bldK`C0%p*kA zLy8kmNIy&;gWmk$4ilIzfv6C1ji5uW=B%n_-$;BToA}UVCXS1X{yY_O1%u^7nM^U6 z>r>`mb<>Q%XUxOX!idj6ojiftkjS{e$+#0lPZjf7;YI`*vGh-F6~H2-p$Px>;DroV3WMGF5NAHCqxp zNFCh0#zRGR1;-V!y0DB0M;~Yt&Fu8&%tmJ?iVo9puu!fG@MJiH<&KMg{8*pq@L{8l z*;V#{)Q=8=#yTWtW^VvbiYkoAPDUgm@TM8Zyz!h)vr(a8GC0XTp;2)N zIUXHP*Vf(+{TLGwzys%Z!^D~K@F#E0W-~SQczq3&2BXOg^DS*&4>m5VQ3!eupbAvh{fRZ-#HNpiPen|o^e({fwK$xSCkn|P^l zOwPj#WMQLu^u=`I`*-_D1>i?liu)miIUrb8vHK+Fk#8>(o}yYMb}@us+HRlcbe@w* zg+ks=;H1Ph1z@+n?%DIhD$C+QWS9cRez~)T$gmReU__^f#*cvJX&#;XRwv`+RpJ$- zwApe+fEG|!tUS&ju%epZCVu9NuCi1-uq`Ezv77}=dlyZu6*{#(3>a6TB6SegD>LTj zxHnJx2KWkcP_Qo-zxNZCSOVjL?1>PBAmJM-EVD1Vm97)I7qtx^=k;387GKQjBDU8b z49)|LH=$p6tZw~0JTAm%7ZoK#-UqreoqA~-r+AA?t`pG;ZwcI&=$6ngA_oxngTubd zc6v8Ia+SvA@~=J&iLgiap4(ziM=mI*POm;<^6W=&LouFM!fSLEgIDSt>Y!TDGu%hXdeUT}b{>pq(% z5C|J3Mnv$T_8YonWK^tBEIklTcHSySnzyC9A{&~0mxv)CX2`_+fyYlMRREF@LR>6x zXqGyx?fv+>bDP{}p3nfP#FS8fOe{TW_nE`z%Vc>nC7@;k`y<{LBO^u?ye-`AI#)r% znI~_<25p}#C+!>b61XB^Uf(NQJd(*udsO_Eo~?>^iAiV@^aC2)rJYLf*& zsKuxJFl3<7=HjPltXvvA({@bgqDLcMg<@kksRjQ zLmLOLuFkbWW4lNcRjy*eh^BjT15=+v0ND`>K3w5kwqo*t)pIwGuOiEV42ca>sa-SV zSb`Vv|Ltc>UOrrg$IbI7{%EUGXGeUj$M(Yo=y;f_Y#Qj-^{uXMvlY)X>CuO3WEQrD!i2%4T348+jHwKF5z1JGg zYB^MYsMcM-L~CZBv~>{q;BWAX$I-;4LVOmMX`5t3nGSD*>EjAia45edjW1tL_Q7B< z%=>+=Q)!w(A|lQ7;db=o?PpPBGE!TLe>{6^4**Iw*B zlj|ij93*F&{h4`@il+sHoIfiw(*zAu(2-tWs@bt9I^QP}6=$BzTdXRY>j%DLB_KS! zM{P%XsgGo*eGk9 zsT4d`k$q@k7al+QY4BCAQP04J4r+%8Jv({wF0t@`dn2NaKo)_$-l^K1FfayuX}Uef z0W)&mVU{OU9vEqifEMWXz+l`3phd7I7(NoGJYFK(FqD6{*wNP0;Gwh)KUZndwcqRL zwt6wf%N*lzAVjcTuzRu`xBnq2bQVdEAA6L)c=6-w=;&)C`tBM$vTJ`|No8xN!+(Qa zAHYchkix#da{KlXev_(mP@%%2gIFNq3NI_`E7baKV_3Am>auV5KyQ`K3=X$3$Psry zCJQGR!c*boMN}b#LO{0Yx-`pXv+0IgCeOBTJV{|rkv zwrtX1Hj6cO{_Cx+t@{`ui};A!OBGZZ_uYz~w*7~g2~5wy4;#()<|0V3Jo?&pk{*@k zDjhVx$Baz_yzx$^4diiE{DIM!9yXV|Ugi4ylInKeVfp^qRle1=wGj+$G=e1B zTUTZO*;oI8TScT7T!?t~`8eLsUNSU{2XLvo?NElSiqjvuf_P^Zw_bfJlnEmRM6;lN>ICWdMwDqzKl)~{q44Le-gt{HB?dH7P< z>9poq6SdT>S+tJWhQ3FzyZ~ORrokue1mk;+$m>vL?%#&u2PAn@sMnNO7vWsn)AsRW z6ef63GB_dp`Fme!=ec*SuYaq^Ub{E0f46lsF1Wh;J=U!YziVf2Z$H!|-*Sf_{j&W6 zd$)Pw-Fx_4x7trnE+&m(6$Q&@HY@-7zF+d$>oo~h;=8P`q-!|jJM^i?pM2Dwg9M=s zR&}v*#@`g`k_v~{JBeSg92^)ZpZRF#HHQXj5^|0ujY7N|hi|RDQkRk%S+qOc;hT>0 zG7+BL?hjTl<=4a+q@o5a5E2qv5F_%Gq(#3s_u%%CA*m-`>J9yCBv-6t{C)~WWI09* z@FQJvc+)`ei1oQXm+Q73B-_i&AG~b(z1tQx>Yh7pR&}3okC+s9QxFh@k~Z)6T9zp@gq7EPS=iyfCmDdSP_Plp|XB$N8M}kA5hj}0#vjx@rk)s92 zre$Gt)Fx~7M?+v>u8$^o--Xj0t6gfD?S;mI zzrNFX)ia#=q)u^SZMMu9vLD|(v@tU-Hg;A^Ma8>QCH75yeU$T&gjvoDuioeCv}y=J z`{8*xcpf-^x8Zo|pJ!QHf0|w&`orqzJQqobP(NLkpi`L#aiFux>81Coo*!8 ztJQj)nEhp5sTKF~nM!@2xJ98wAq4dZfK^PkDk;Twlr;WaTYUb; zRstbsS!@w#G8uw`f^(uPE_s2JmhSfCUwz)qooKZUh|e^eu>H^6KdQuHwz;VW0aO0b zO?4r>m#dbG@QgO52UTV$ReRveMj!xckDsY#GqT&$-|=4nXl4Glfpk+hSD7-)x4m!7 zm63fB<{SWnU5VrFt*X&5AWp3&5Y#t6E_Q*q60oV$!?5elZ0H+vB+9xW`xR*ZVX{|= zKHqA=9u91~6cx2mne`9&Kf?$(IRueSR!@$r$t15OM6QkpNh=5Pwoi=Yepk{M)XtJ? z?1ljouMD3YEqPtyDt(_ISJxk@C^sGL?3On+Hw)d&zI^M^!!Hs%gvg`=cTC2EwYKD1 z4%*7CnvU-)TgoP1lOaa;l{Nj^*R40=oyYfmHjx@qR9HBA$&b@?PcivGFwA&A7CaP< z<|7a`QM5q3`}(u}QH|-LL!pwF^|DRaawQ%cqMS(e=|xiwjO>6H`{5B?E}ivTYoQFl z$ja8%))APinp0X^XT86UEIvgfgEN7MZu)ep`>Z1)2=rro-6<1cK0AMGOPYR0YQ)m-*q=uAVo zmqdeX3iW73Wo6A4VSXo8aRsI%GelWFe%|1X1cLv4mB&iQ+pD&tt{p<_YgRjz6*lBs zo{wcPKQxya1s85czE35b_jWOX$J_Au%9ufUzBK#Nk zwqkE>S=nAliywDUs2~#dZ6X@o5%fDQYGAxEsmA3|dm(nYvaXR0g>urys=E!<{FuNsWq@wn5;Qd>TFG(lsxtY-AUcWB%L#AvsOz>1Tu_Ly1skgepA2ehlTD3{f}cuEMmLdW z1mz^2Eg^VY_O`fsbxfq0-LtqdS~cDjkzf$+?{g*j{CY^^9N;E63XyGS64 zxXm0)vdBGYm(n`cdyb_0seDz><>;(W3cLm?qM<_RM6z6SbFQXBe(lcb1pG{Nm-ImN_u8omcpjEd@=ru zo@R#*L2g+bPM}R^W3r4=s80kB>a^oPC|_G&BmB%#)1o<2r5u(IaJX1OmbE^6D73KU$(u zvWUYi_~jZjH+weF5gFgc1up0LCZa>sNuff-tyJu?-n=1&l53TB885R6B)YbdMAPxe z$g2c`x3GiZc)OA=5#rF<7P;-H^9!3Y_bw#24cUJnH=YvZg%`#PABj~wT-ybZ!Q@Hd zonxGZp}sO8S7Bg64;Qw&{jRO8h5F0morm)+IBDsGw2OE&UaDx!3DJ6JH($Z9!ZA}b zXap`%zgDt}U#JM^5p@9Tw+=H6mEdbAR?;ID$s02yB_-#Ww)y{X6~T9%9XIOURK?vw zAbe4vX*WRK%^g6Go)rQDp;9oUSr;W6=jb(Zp?i$mSE5!Uo^dPta@rYdI_d6E#b$7f zQD-(o?UtnyYX)bO6O9>$kN(5TNhC+AM`x9>ySnB8P@DfeI@NQVR^iF`zHp#zkLTBb zx5Yn;R+4l`X;Oo6LRHXi_p+}(Ly@5ehr_2l0m_Fpl<$;He@MK9FaFE;bcx1^mYROw z-^T59X$t*57VIfQkD*_6UeFlxi7CIF6@7@UC(*EH?J6*S0OdwVcl5WP!ttc}`u^^+ z$o=Le_13Dl$Wc)Fmo~ASTzdQbI+PGR+x>V@B`o4Hkb+?g;Ge;La+XZFmEdlm`tv;_@ zWMs&%BAeW?5@b%^l0cv|y%v14@R3p;W@M(Ixin-}&rNnZ3iDsQ2e+5i0dZeGQJtRb z_z_pChB?lnfp~#!{+VU6pMiSWx;duTt-!F4_$u5};iMNA;hh4hiTbR*k(zgZX}vY8 z-&aU`{%>D1V&Bt5IT}uNW|^kzU%4>RoWcrLzpXY_IyIYSOO&0#IKvrgnZCTG=~FGC zzq&`(lMsF{S(Ri_{Ihhl{ycyFoKHIJPm80Wq2U7jh)*G7swl`TlamU4&)Z2hfdd3A zq%yIaNQ~^woh9vPCdB74V>~(y8s(SRhU|>v<}PjHBJjLu4^_KjbmWKvwDzPU&?w2Y zFZb>D%2Lp#2*3OuGOu?kvNuWnOZ=??JPtPC823~>pfS*C@q^y>X9XEPK}F#cJcR#R z93E?ub7%~-F--pdoP>mgg(Hb~*Xc%wCGN`ndpG=Hb>gcMIb%Q6=Z;L~n~st=r~&e( zUkGsFR&Ncp3z3$QA`r-in{4TojTpx^NQeG<&cWHr45{u$P_)UWtv46e*%zM|ZJnZz z`x7SNmlR@(RqFqthMl&}->5dVj3zA9K-sfGJ{i$v_e$FQ&bmdak6Fa8=X{wpGb5D| zBKkgH*j=Euua59pm-&aQXSvG&vO^{+Qt%l1LNY+ubyP}aSyV15{w|5@F(<+5(sz^U zw@>hqauc-w{TN5#T*E5Xx<_O9*#6|z7L@kgrpY4dkNH5gRnJ_GY?73ln+xME#a*V? z*YvVW61L+h`}J%uK3W&mg1lrT4BKh}qPzcuN;~I(omp2=upz#0-#$}D^gFW0fkbjT ztKUC^L+LEZ$CFstqi&S)pc+d@0>MS2Z`>n|bJV`h(wwI0W*n3xYP2l?O3LCASnpeY3 z4UJV*yL_wR>XObJ{?HEXUk>Ul-|}P2kqSF5JO7`LM2?xM=~L+FbH`Q2e>eV<<+&|- zCBc6qpT2O1KA6P{_t*oSs8be3YcDQ$M0Z_7-&~24_=RRS{+DbjrAvgY%H)~qW)vZA z#Y$}`+rYh_>z#zOAu;lJm zqV50~?9zzkRAttQ6^|+-9o7@PtF*3Kxu<3iaPrruwb`UR=^guPi!}zKEi9YX5kP;Z zD9iIkJUx)hXCq0L2L>sUg>5r+=p`M5{^0@@%}#9?I5RTLGOtH)jHmyzL%e$|~H@Uq{x>*kFcDp)(@+Bs&x zX@){ib~#^&NaNbL$-ItbglD%_Cj^Q=ul{XFl%-=$kmDvDOx-#c1T1flO-eNyvJPB@ zOL*=Me*^K2#>mFR<}7B%OobRq2FD#uqcXH|t7ppV@)aj_7Xk=Bsv1v>S9oX_UY9do zCn1q0CN4g+<5pw%^WvYD<;SeV_S+GNMxD#73flr~QgXV_4CU{Ty=$FosfclFDi|t9 z{elNo!ai~len^bDhUbq36t>w(h>2BbZr?uEyckpDiM4$P?w!#2#Lx5X-A|J>c8Pai zqCD9K^DKN{5!BcP7(7gobbnZ_ZdnPrKs!@YBpL?~iM6@Nt+GM>TIPcp=;FL!N}x`u zh3xTsH!oL+EGi9L7bfhhRGXpjngv^M zj{%R)yY~ZsY5^Gx!h$&B%DFWi8g6ecOy7RPh;((Y%Iirt*M7|FgxXIBYOcBB5tH>d z0+UWM+?%R~ErOLUSA%VcXg;HvKzO$fG)wMt&rH#bXl-ko zf=}9L>GR{>DOn1VBf*i8RlW$ppp}99RDN154+7}WJZW55ObBglZ3oe=JXSd)BO^n2 zr(+=GyffW&8%hPo+ONN$P&?z2LS1V~(HE$jwbSDwaD~XL=RT!homhM?aNB9yfBW4a zdQkIy1MD1*s)?T}Kkp%3!jA_NTZ}FCB)vYAfE1|*>V&GY-|%rNn*{w0_Yp`}+W<^@ zMK+;tFMt+UCpPpw-}0)LKA$6?6dT(=K21;h-8OPHZ11&@o6MSsZ!=u~B?*M?yp-M? zr#jTpS^-d{9s060s%mPJCP$C9nK82WC__iUdY6ohq4sN4ll?^5{fT!Qt{L5hI&BHg z;6K12E5WJ0X^|`U($1hn`24g-B0NTIa8bPS*FzXLc_9C&lV9-Y}M zI+TZxJ}jbK4koSqa<_1ci^=1PBdt|yIwnRSf&#-4T~y$rS6&vRBf05B`(j44Z#|KZ zXw-0Mvid4l#Z;E{UUTa)FHiW79(T*ZjF!`-jBHq~2C(wduP> zjkTF3gT~%{2?igy*G~D>*oAB$c&}Le?t&l?NtQsi>4zdrdL zQu5(%PwwaukMb!!tf16h5+_g>dBK--wTW7o#VKL+{{yJL04$o9adB}|nc88ypO%%~ zfb90^zLA{dqb+aby#ktf2&NS`$PTq0;nnNn`(lr)lnD#)j$-gMA3E^<-VhQBduwZj zT~-}S_wC!A5@q*ecl}=+__y>*n{pa@mC!Elb3E4bxfx2Vk)1g7~#vLa`>p!`-5`@HfzWsd|ROY#X z{t-?g&r60;IJdeevF2$mE-t5of=Y92^WO~j7B#K+StI!P^-|Ld(U0B!ewdxApQs(L z>R_`UVHoop@cB`*Y+856r%%DIoq;xO0WXSwUJmzMgcA{8ZT@96NW5)`-PDdAn1%3! zzlX>0Aa0gd5N)z#lbJr}9<$Wiy-GihxD&jOxoQdd>mH5stK9s@z4BN=y0y||FjCc2 zA??3kDq&fup{knPMvi+`EFdJz^X()tn#RECSuSgtC^v9wYpNZphV=BbwAnAvgY{}| zZl20z4r;rC><&EAyy9ME!Swjl*>#Iv`tdl}#S_zVw6QlqA74G4e43^l|j!@*q?t?O5SIP`c%4!ED-rd!EgWjrqePBVu$? zaIlO_&cS_?TcyPW>K=eCr5hA9^&1E#X($<0g<&*RidV_ESO$cg8xDH)sp$w;WS@*w zKGXs3;lxd!+!3-%VuhpG#-t#00d^)d9H|xEVAQ;nOQZFQ0h=sG)ZHU0V9LjR4iS%| zXCAtS|6+mCwr!a`pFhX01hE;vB3w8gH}0XTQj*; zNytcRknPx&c*T-@AbF)#bJEuwvA0sOj!ghi;Wt*rrrsP3>oKU$`7 zbna7aj`_uwwWeRY@Fwf=n-RCEa8e3eS!!5q!%W!le~oX#Z_*_i*0s3$Z%BHr1p~2N z`sP)bg5}JHF9a4@fAF`zbdHOQivcU>fr|J;Y`OC?54mpxy4%E^z&W<;#^L#=JyjZS%O&en6i7r-4CpU%rgLzy zG@;Ovv`LXh7e^oJcBbVrH~eH|o^gEz;_@n!8DQVW3Db7$=8T(cT6MV-1AVU$t&Adc zE5r58xnW<_FCkOHl=iiOe0U`qsx2VKe+&>63pSnnX{?fdeM{TYuumBDav5jrW6dJ`}X6PuLG-&zsyivK)3 zG<4R8Xk%+{uT0Way5Wv5CVg_7GixLLgPbt~-MXc+{(IM4>4JrqGYV4RDm*K!mFh8t zd|CJ6PG|ZBvKaS|{oE4Y0)Cb*qXEnPYG~r)_WB{nl-sD?O6R|*8zfM7Lzk#rq-1wo zwBG;wp0}zb(iai*9)>2)oFiHM7#!>X7r<Au+LfH zF4J*Q?AbVBQd7^1Q$*esP%CODP^WPF@O@B#H0#D^?K3!=;9r@vPv+s_yw*T?#`a5G ztvj{^E4CL>&u>Kga)1RmBCId?H}vV(Q0)lMprD}RRH{5U-JgdoB<+;n*B!Iv@#0bc zS%0GNfTt?D96JPdt`&d*_l}!Dh0Rd}~mqBo>_ z6_4!b)Xbu~iwmOP@R{oH9&)3;O-gBSMzdWCHJ2Il--q2q;xFEy^Ji`BpzK$fO&i&m z^jf~ObB~A3$1e1uEORZRpb&H^H6`WD_;i(FTfkFF=A^+2_9Zd(X`rBe@4RdJGOkq! zdc1{}l%oI-H|F~hAJ}YUJUKa#s9J-0d}gZTxr321GW%Sz+!$)j&lgJ?&icLoJXc7$u*qEbnw&Ak zTzDLCqs_pdufX(S7^MYXC+hTLiQgKWN=2nU+%tT=j5IdGd zwedshF>rDD+6<79ny(+Ympm{)Ys{rkMR}uniA3-7hga%0tJL2rvi|9S%|NHNzXckm z9h^sj#hv+)-kpIwCQp`IG+hK~s-q)!R?UV^`Lx=n22nl_6P6iisha z^A$S84t-cwrtZ}_nL@Q$8k05XZNSUTo%ZW0k1WqhUEvg}NKH=-8XIdj$DAoEDrzwy z4!rL7t=4LWX@_s~n>Ppi(P+0uM$RW$RTF#LZG`#BxORL;@+l#vcU9)Ouxn9He96Kg zBI~yrTgXeS7}Z;UZ8%u#DPq7W8Y3f4Z+-KLqECx*7vRJw!l?1?&~9XhS}U-uj~@nE zoyV))5@S)~akhJOiiOj58w1-#6SSI$h43h9y912JJQ$}AnO~1&GP9V>vhvH#EV1~& zIg|JfQuUjz@ow~FIHKQ=QFiO0O4jZs@dFVlG$AQF2bb(giI8uD=%w{i= z?i+zRlA#KLL?Y}X$|hyqU!`v@ALV3)OAB%SD@NGMc(}W?Gqmzd!=$nQ1;~h8~g+=F5BWDjgA`v10Ew*Tl3}TstP=zNyW_XV(->>EuDNm!h?)pE_0_nBFF3_I zj>=xM@r962|4wWhAD8ssiLT{QIb$X?xKF4{bYG)}G!{Rg;!EQO zNo~&DTNAn60d|JU>!NO-h|RBdP;K6CNy_Hlw=Z&u;5Dkv8ri!LeHcoi!pN+^B~dP9 zk5s}gC>Wune5(@s0j?UOv$LT=Mb@!^S>9(di8#QE479;eE@Joh~)2j!Apw}RLV zaVB4EpN`L;mB8SFcSa!u8}2H+8UJI)DkjybJXFA|{30}5l1IGFq%np>ozqzTJUXOV zCbOQTyHbaALaTYoGOu+6>4Gb61d5`FS&{W0;8;6Vf#tn7UNQI#tdXoOfRt(k}#gZ*-sl4w45nqc$ds zPL##LQYxg7-@ipy?)Thg?~YHMi!NubZ+|^6dhZ5y5 zP+Doi=B+Pl8n5d0EmzcP9<@$+!csY;Ef(jAA@?w5(7CjZUcg*SJUZoB#lkwIK{QEY zvSduy8M{s+;oLgQg|OYSkEnxwnQpWxu|-6G^TEW&DW*B_cK-g6tbAVq3ou^33un9^Cd4Vt96NY2U4e)?Rxt%ryzS7H!gb*j9{vmV~pk+<@5_cHC*JM(F?c+$l;IApO5+b z_-y|fSh)u~_1M;<)@>8NMn(#1Z1XF~CVhf+B*D6?huGg#P3l_RCX&UTnraAtS6_kF zyGlK8or+k!bzg`BLQyicd_A$Y0I?JFJtK2V^rVtkU)F;aO%Sk^{`*Pv#>|NM5EmyW zo&5`M?r$KQ+&a8x@%6`xWYg57o+VaG7H)-moZfnQHn|Nvu5aL%+~kB@Mp`g5!HoDUnL$aI;pT=D9cGSmd1EYwRxM-raL;9#jqP! zlQ!CwS{h+)of0-Orv8;_<-ntFKH0tQg0cB^efHy*#SdQlq{VNy!pInoS1>O+m}r?q zEguZ5WTDa{#Tf)0$^C#5w4*9wVSdD`X3pveg+jHl3MfCuZ06*_Zd$S4I)^5vVRBP! zYn-mp;>8rdH_AzdLb--_lue`R8nvSz&e+Io8!{5sht@XUL8J@f1aJyp>>M4Zj>m>U zVp`N0>ZUOW(XNbBk1Z9aQDOW?W8mjL{vX=yBFgK<*r;Z*T0H9cN?mJCDvc5A(RrO} zbG={)Kd(wWcxCBm5eN~z+M7nCoKG)5|K;vaQ1?2OSg89~#TGTG#DXL0BpUTlDG&1n zUx}Pzr93oNE4w^j;=;2|=~5QvpT>~E7iPXNVcH|izZuz|SVF@Ubj&XT;*!PcR}{IT z-v=&xbDfzf(R{HK`{^gUPAlx;&@pFjTr@YL8`xZEN)7#3Q`@>=!u&E+VR5c@U_3S}vUG7U`KeWs!-qkf>G ziMcp5$ksEzOSMT+sh84?W}$&u_@~T|7OzW`Wn_EA7R8Vh-5FNq!WY44o21wEsyBTJ zae(<+vYc^$h(o`+=~^D0RJqq0kM36-E2xk&R>k#%xtRzfdkdhFt)ow8Op$D1Tzn;) zcEw2)r|@;n!5$~kU~8Z7m85*V6~o3>ZQLxV-K8W`6Oexm|n%^aU&8>fmNOl z^vadiTsd~n;wvb9c{DM1QC?_dre!H8HTWp8ilL~O=C}9d&_os(ENmJ3Ff3i04jMQ&@?CaEWPsXVbPtO8hPLt#!Jyw=}T8E^hLyDFmMzQ+eQ*A!V8}H!J zQIRv=p=bU94tJO-sU|cyBari5&{0i3FaR_n zlQ*+z5X2LYavG}ebdJU6Fk+MS%!P$zdE%89A_(hFW_wp_dcVWekYKEDs#l + + + diff --git a/src/images/github.png b/src/images/github.png index 22b1017982f887fa2001d1cdf9c9e5e85385e0df..7b61598cc9032c85442adc48ebd36e1eb1e7248d 100644 GIT binary patch literal 43288 zcmX_o2RzjO|M>fkvsbdo$Ppow%y3pYGO{bPuu4kC ziI9>JlKFqW@ALirKaWR`PrY96*X#A%n?!5NL!4|PYzTsI5>1V55QGu_%80Nq!T+Lm zD8wQNCeFvm$eL(mB4(U{X8q|E+i^;VJx00>d)it`D{@YMW$3}ttUEzBVgmC1wmjEwB~$lwpZ>i3 z_tCj(OJr-Ge{t~oGg*~2;>E&3lN55(Ioh`ug&miu-??}qdu5Ey{}zjNnK_y!?H=TEo?o$!(j z@d-L5d5CCX?HJ7^h#-;((b&K)bl}%eSh)RC_SU>3FBb2Q!@Uw9#K!!(@=NX;6PrEb z>lhCc9_M2jO%5|tb~<*)fBKfMlt0&gR=D>H`>_WsSJ`%6y^?0ZBNt#-sq=h?0E&fyP4nYeqfVV)H|@f!XvMwcQ@k&$73(a**6^w zsxBa36&~!g!VoFn6yCGoiP|J)1}(x3(ta+7LbIPFS}M)6nUrdEBA%*FQkXND3otKU z3aip%|1?3{I!M7EMNBDnGj}jb(E?4U#VfpTI&k$U%wMf9$YWV~+PjK(l3@N>NXs>+ z;Mox(g*>J7_Z<0CQ=7w02j8mGqPB7~7Y@EB#AaL9k>C^A-iLjnPa1Nj2+?UV>Y2OQ}39a z+28Y$4NrWGq~hfh1{ijbr4=458*6;L@$H1@oL*H~?=j)^eME{Pf+r4eU&dsUI|*%O z3U5!PQ`w^VZ+_ZK($ce(q#sXwLFhLtH?I;APNuXA(CSIw9gmqDl&0^=6fzM)XeBhy zYSOIiXWnr zWI{i!ZT%p6v#EPTS!hK@=9Wfuyn*nX_FR6NDIKv(AGm~gDmDqs(rJb#PgpZ5vV1x% z{olm{m^N%1<4=F-G)gBkb)8i2EhUN4yy#=Mh>(-dGYww(?{(aD$9(>^lj)F92#i8@ zK1(XR#E~k-Oh+Gnp+x%nt9%WAtbcgb-elumz1YbH)T*r4!n{~>EpuZ4#E_l(C*b|Gh<+T)Eyca||KFMD^Z z@zM!xZ?VUpO$G0?O*$<-kBuxCv&2oh0chgL_#c;p855Xdw-Q^Wh2iqW2MN#skcX>Rjk`MRp&!SGK8eOnHk@Y+k>ljzph~j&GGh36TEI zXv?Q*`Ydb=?xo!(9c7|F67On7()8Ev?$gBo(D}~rgnWNq6+^#@=LcifHjd5uBqPf5 z+v5h?=J=`xHSrx-0)^K?fn=<*BH<@Su~Ty8x=P*^o&4V;cDB

DZ>IxByd|!@9y1 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 z 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 diff --git a/src/images/github.svg b/src/images/github.svg new file mode 100644 index 000000000..1872a00ce --- /dev/null +++ b/src/images/github.svg @@ -0,0 +1,22 @@ + + + + diff --git a/src/images/ko-fi.png b/src/images/ko-fi.png index d19991b5f3a895e1e3ee4b23d08ec2716024fd9d..ec0c9477371fe2b8dbb91599750082df0add340c 100644 GIT binary patch literal 40174 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 + + + diff --git a/src/images/shadps4.ico b/src/images/shadps4.ico index bb50f9995ac82ebe259df8199ea9a805b35df411..870569def13a9afb256f30a9c4f4d5e7a58da677 100644 GIT binary patch literal 410598 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 z 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 literal 74814 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%0DoV=0>tZQeC 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 + diff --git a/src/images/website.png b/src/images/website.png index 9584f6b829add7101f6fe51c5e451beade335bd7..e872e60a29d8524bfa709204c5371e842823e4ed 100644 GIT binary patch literal 73633 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 Zo$= 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 + + + diff --git a/src/images/youtube.png b/src/images/youtube.png index 362ac578120a555ad47a80f8ec63b40294e0ffb9..2a69760e6ab506a370e674415fcb03d3d4b75548 100644 GIT binary patch literal 33075 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%0DMMzX(FX9wl9I7Q#eYJdfcNnFlIf2Rw=VZ6-UC0( zf3~6MB(r~!Ak3oZiZoJati!nhUNFEYlDZnJ+w+?Ql1csE9a+cwT2GvbXggZAv3d^` zfA2UNikP+egS_|evkNH4Zh}6jBJL)G&p5l_n0Gjs(!WbvCb1Rp!Bx8ykU|sKxfBgp zUi8DTo2URvk92@WUMmrnS1H+&uHD9|p-4q=A-m!m zl=kQ++acfY#+t8BTPp(5f-(!gb()QvdHJ8Ki3%6#gd4bn$x* zhv`;t!Q9Sp=h9Ecvfb&gZg7FRS`GyoeR>Q+I(E6|i+3a}x8ZXe|D zVck0v*eQWf>3JJE7hQ|ap85sK7>}NMn%^C&3&M@ZolP&jaMqgch=1@&{Y%kdv@jN1 z@%wsP7_eO*x@K1_fKam9o~`-wT&UrBIAb8WWdm`OFrN&vb1vP+5?p&7Od@x=AEi6*q^~!$QRtDgmK;V-}t+Z774_R2F zep*59DyI$1v%=_>$>7nje#ZPEaTx%6d6F{@bTi4bB7A@?nX0T^loRwHi4KnqV3%F@ z@3Oy;hD89bS-;wuckN(Dl0(WK_+i0{x{Tv4jA7gv&ivn>w9u7&0w~Sa9Twq%ZQDtk zn1Qxr>GKEiB8!lwdJnZO3W4R>pQKkZN}|}iJwffWo}Rnrh4A~^Aj-Y0no_$C8z0a7 zOwmaI6CW1^q1rM+!3o7;94zUoTftmQ-RofIX0Y?|?11#rEu9ZYW>{V04`!-HLT_S( zEt$(0xa$y5vIQI6&8~=_91pO$`Wh!vvm)y>Wib-(p)TP3uKBvPuy!!iIDFCpQY`CV z5KG#IgRwD|TEG+c4nED_cEOcyRRyXos?%o#Y2;bFM2M_?#su)L6=VJ+?9cA|E6JJG zN64duh^Udu-+uinnGmJyz6qu<@cM7M^+Y)tq-`kVp&XQ)IZE$cdYPNku6a%hNPA`_ zUyARl{-OVNQIfBo?mDMy0uQL%Z>BsY73#9Ouvl3G*|6A7R4m!ak($ZG8~1{hhrtDqq0>q5 z&J5#G30Qy}lf+;%(p~Qo0Wq(Sad4ye(tm6L(>e0FIO1oh8h(#gB^@f4D;RV0prfOU z_R|vb@SYv^26P@uqjcc`P)6FNh?_sltwGKswVe&^7xQ+p6u~fQN^=Hq)L7jjsxquq zl-<&W=5V{r<4DQEx1Mm$Vo?sBe;1ZxQR438nhEoebv;4ThY~kPm?tW7v{=XPGGU9V zB9$C{uw$fn-kcsraWfpuhbU3+!7DxEPZx?HLc0BSDqVYn-C4Q`e%H3Ml)-9F2S5!} zLtEBjLcWC3gf+Z^|NNVp|p#-ApzyB=#>ny(7wsviAs~V|!2Pkhm z&x|yawhqolUp)4SExrE$sG@BAr9Esw+u8i@1g|-~QZb0cl1$IL3)`)`hc+Azl!CSU zR7E9co}A`K=%PtE>6*0VJ+>&`kh_2A{}eesyR2X{E1pz&3-71kqa=TJrEfNjzkMB(}=Z4=u`hy~H1h z>;O+D>g;|6hi(f|7_Dy^Xs}u1A56aus;DqpaHR{rMF^#MQ0aRqFGP3*kjC7Zmk7~D zk4HIpLmVaYAj)W2L;j-XCJ;Pmh0&-n-Ri(Y#B6DgXDd@$uqCA=&8;vU{6_P;p+_LA zZcK(0FNGH~%v6PJ7%M%a`wI?Oehl0oA8&v4L8<0#fXNm&ui!!7vYmI$OJKdHMYkPl zC6vgqzT(^69>XSu@m?f98n~)e)G;zvT_e&)XIGT|I_Y6nm372qMM@irbHO z5`2bA*JeQRd>7zmuLhMCZa{G`xhcmN73) zc_0dQv~enqv(`HSHQU8TH%+!Yv1S$t-2^BIF&PH@~1%p%jDR(s;ee zbWQra4IHaY+v|p*xelC0$z12m1_RLdw_^ZgOP-m%4~8g4K0T&|cu>~QB#O>$5#v z+W~g-5ZCxTJ&?^GJ@udvw9^=)L_U@}wVkH9%;OU$Vhn8{Xa7svH z<~P_ZpI-1+WfGZeg*z6Du==;%+rZm&MGg%AmcC?j!HdojsS<>Q&_hbC(jx@k-ur55 zAQpsTVWA8-q{EDP8P+-2Q8nA0k+=htLK~El5{qVcKs=F&D3F@T09!_jZ%Y7H78-#7 z2MhG+H4Gn|dpaFI8jmtavT*Aehh!tKTliKRbA5U&2^%5PJSlGxSzi zC(SQVa>meQ0di|oOyM7CPgxp~`N?|ylIne{(ny(0SMDr0YE4MM32TZ+v44{Mz`v>P zPgC+ILT`c1prWcxl#pn)7|8R7mC6v8#rt+smZEsmpW{VDQ>FjgcTwA3N=O2@$w2(# z)+R?N8>wLUNV_MzYM@FXo6GKdupBD^hrasLQl#d1_6hTWl8~)UlJ7|~YU-e(@zd*WiR zIGh6G7DgB3tcyGHEV4VKZf@*aOG_HFxEcxq>+CAJ&uZH1MriVMmR?H8Xts8MBqUjQ zSlHT`ui{SJN|QD4u=ezG`-6`o2Edm@rPUAMg@WB&&SmkI922(g+CsDTbD*EM|IQ7! zmNwDZeWdR1~IVaKu6ve*00{qu6`ROO!N`P3wDxxHML6k*ZRj;1Au^RkFEUo!>T!m_@^4XN27i zM%U~r(GtoFyf8EeC%UsT=8_e%X$E(W!KSqST`eh6dL~9@F&ZwnH$guorvRVd`sz~3 zTIrecNB+BDnRXyQ4r1F;N!&%*EmdeLtmwp7k*u+YH9Y(Dz6&t^B=E)=LZ@{93!li6ps`1P!YY`8<`%p(*O@Y{$uh_T@gE z9S4Ne6)Thvv`#O@33~zaNXR|*2r1G+o4)`xBw}ENWKzVcYAphM5sB}K??mWzEVSY8 znFe3N5A*Jo1IVD=dFi&iEmZ>+XODIeJbdU9bABKzb9F4K@aePipl^Ptr0y?N7k0cy zplq_DC-&h-(r&GZu%r^GyM`|ez%K6dJhvww2pygx1>EbxXuwNK8crtX*}|`*LHwQB zBqPQ^*K7RTlR&zhLC!P7avu?Qf`8;s>>Xbww>woDrnju1-JrNBl)+}G){!LjSJNl{ zIoe7X*;J_ua#y(=Pq#)#TL{_CbSwHYzeHFzirq}QMk>q_D0hkRMJ25xASYS6GQ#rZ z>SsAzofjw}aZgx(m*a~Y=(R>(&ds5ppA8`Y0=z8k-sk9>1H`m{SI`2|+vea=l*Nu} z@V#^ImK3Z#!{k1HzK%N>xl!P>7K2UKg@05lDi+2G|2Ah{9~md zv`0>|)D|{Gv+?#foIF+tmppLbK)KyU(XM05n4H86=7Tjq2;cwb9D=IQ^Q~We9!859@3Fz zTP~VuF=t61AGU2RDHtqoom{9{aA}=tE%{NG@75NdX;o16tIlS2!6-D}u_ks8JH zW|HI9dND8AwK=EzXnAO6Ucgw7OIwj@!fw~8T(I9aGvr^^YVJHS1yW6hHb zEqUh)I4%=^zAf_b$fS-{gPoq`t4Ji3dj%24e~gsQ4HY}HKima%7+G0aov^aP8i|dK zeU+c@CXthnkf3~~o~fd$>MHTNV0l|B?~tplE$oADIE;(WO(Nb_!(V9K&dm$66RnG5 zt{kzV!@d9hOySwzJ8YZo<6k(e=GyYA^m5Z{&#p;(`_`7%o~Ii@TcwG|bDd0fyEH|C z{BE{b;s?Q#&034oT>?6_tbp%i=E{^jylRPT(5ks2n!Bv8UNBI z+}dbVbLCUjzTR(z4o#p?&|pFERAv65Qy=41TmANG%?;!RjIyM2-P(#=;D))-EDxYh zN=U=oD-{pLD(9Cne%yV+dihVoTz%P8d!X}=*Pg8f>FyhTU0WuG?Z{oCrC|B*R^Cb1 z@Y(#V*8GfeA2MH`o1(=|pZ3h`!DBaFQ~sTu=+AZf7(ZAn+L&R<=uHmQsnec1c`Wlp zOpL5W&kgAZA4;d%6GUW>@vlqs+W-|3yZs>NKsC6mc%^PVyvsWz`*Y}BrNjVJ3NS)H?-(&Mj+6)Bzi_wubx+8W#R@6?X`thDtx z8q%u$H#0M{HTlU3GFS44p?%wnFZ4GKI=;!@$eWZLJTj15*Yi6y`4isK`%Qth@`4p3 z_LK9+w{ceAF5|M>51g{GkJi2!-nm_;-#IMK&orNo)K&_apB@Zf$Uaq>Z~GED_ic;y z8hYAD`&8?BDK)T+g#g~x_J2oemFw8}-CdEo54vma^*&8-tA_s``W8hsjl`UfvH-2@ zZy3qeLwsMC`apK2()q>=<2WVBHPWWW`uguDe}=Rk9ss{<+a^S=jN$om{-rcR|IGrN z|Nf#ar2kF+rB0S~axKUd+re3!n)&D+!r0(mVt%~-zRrEN5)XN}Ke^=_Cs;h38j4LL z{cvhe1(#55hGnkO*)LB-t>1t})Ii)?K8=o4gTd!QV9Bs9_MO|X>Os&bOKX0la;9xK zd&B!v!7hnJ~(_tc7mYc@M42P<9p({O8pn!@RK zw^$$UZu{EU=v2W++bG9xyQkUqQ}U3@=9Ph{T@AKEx=rt$lU zc<}h=X7}<1rQq4|WnxPEccOYbyiYmXGA+Nh3l=X*CtHH1iaU<-lc(lF&WS!1LE0{R z&sizZ+(s6s%5}lwTqaxH%WsJ(OL6foTPc8|-{RVV#)dshTSou)^A5(&u00Y`u$pR+Gs z|GF8(nd=bcAGmKORd}3Gzi@)_Bf;V3>18&pV$O+o{mSRs;?&%2;uBos;kh;(%AnX@Zk-g#6V0iaAK{HAwWN| zHHzh07Suq0b&a-ex=d<(}8S|42LZ)jx!t6@B~j?YZ~F zH;dkX1r=*=ipX*k6^ExuoMXeG9}WgAo0gw_huFJPLB9 z05|FrNlEcRKEV4A9L%$r zof=kLiJ0HVhdXo+KQ(4;=$L*7c1Zee8(K>3jC^3^Wv$I2^at~ijp%c9V=p=L3(C%) zYAwoVzm+UbWYy6KT--!7p8hdGt@r8%w-3b~3qwCbISa%vwh(2~I49qRLz~b!keI~I zytD1u5CqFl9h`*@=TC|1FJ`&Wg@>V>#bz*6Z^(+yU<-v^cQh~W`?lN&#%EeZkY;ZV z>F`GVBh8}a(^WwOrzL9oK0m%fKn)#lm0gbC(V6YThOayOIg%S5G8r|Sn7#JA*9xtb zoQdnY_UxRyd)-kB>ljI+*rrh-)KH4Wj6eT^1wr)z#X6H z_N>smx98mk_gc^Q8!(y}ZlV5oRlCyaU^P-^BqsZJIZ^$b!>eST0?A<+3M zl+TYE-`}}+9du{b?}q(o{7KVV82`Fyg@K5wWPlt?UV!!jx^HdbYDZW+q9>#3LKnxx zcG+Lv32mP5EiLh2tIm*QaioI%-!gW!C?BW+SYLwZ4vF*%QZ}CRjGoXbkQGZYA z{fT2J@gAG|{Xa)NCYzmmy_4q>T{%D=0_JmsY#8wChO}32lAplk9qXdmpBp~IQ<-S` z5dFrTHPuTI!=h|dLgetN05DhbKdAU%XbmxBxdC&iSFGxh2S>G&dlh&Ay@b5Gn z{!J=QU9pMxxMCghx1uYHi$*s)-m{J^C>?bD{XHvrCqnev`@6OQPOee?esbHg>I_vD z7iEZw8iF)f%ii-iUTCy*?*0{_XzJ~q3wH~El4};{hLa(%s+5Co@$8FJm7I|XUK~ET zk^7}Po#UZJJ@)mfNzH}t*7qQh2|#nzQER$0Tz&Mzw%ni@uTxZ~T*i;Kd!e+8{`{S1 z?{HNQfIDA>a;x(wMo-|{YTSF9CuRn$gbGlQB<0%aFr}jDUlHDLFsa~(pf-Pz)^@s2 z<#ILt@SODw_W9r$zP^4d6ib@9+eK4~S9UfHneUQt9`E}MH}_pieQ zS@oa$B;BFsq5ihEv0C4H%`Ag|3fk_3lN+FYeyrasXghsrvrMi|QrO(+T3SBI;>n~T zw@gfgLXk{wqW7Il4sN-db^gd&X}8Oe~YM;NzsYB zG4}|E?f&5Q=#MkK$;mxEPJ4mnV)XR%B!(`|Tw>m`v8{cVqKHl|r23eucSnm~?0a|# z^y>u3^^B={)yB8chqCJ41)HNpw)ayPg_4nf!F~RL?rnmqs%kf6xRuanHA_;`Vqx+ANb`lXN#Q7wu7Dh3ME;vvH<8 zcx&Aj{F2@FZ?6aS=}D~ScFeWiC427$+Vk1js9F3%gZVy?LQ;QIz>}3Sk8KiSL{K*4 zlh#DePR^SbLja2i8)sOUtXXP^ZFCe|@a%W40EpVTk`8du(i~yWk^~NI+>^ zz&ofz{@~f$EN)r*Ww`~=AZEX7lXW}#!MXmB%R?5t`W{{rxTN&wrDc({AWc$7t=b8y zL^vJ~H(u@Z_fEeb>_8`kQ8Yk8eZaPIaIPA=9IJ&3oDVe;nJIS#Xpb4wYIhG|`~Kg# zYwUt^$2j&9)1@UMuIQlvl8JeIN27WH7QOJqwmc-Dazp!O{%QjP3O)RC#V;hzNSE03_o|Vz&1$B+u z=19ET`;p5E-T4s}H8lv%%umZUY3&gdRS*VO7|gxkCyKi0;y>Y@$&S!aA;gW+^l*qJ z@QH&geb?>Zy=WzN8YHiBR0*E-0TbF|5#HXIshkfDaXSb@SfayFM+p-JXbOEp+8>1^ z;|7!;xir48PJl`rueburdj)xUdGMM|re9pMw)KD7i1;=vZhs6w;5+bP)c3qXn-aZ0 zse{y?**;zUs5loLAIN=pYlTMNX1u0zc-a@%TwlMnC~K;adJw|<8X_Vmjcq0yX0$pD z4(&iKA}IQsTk)V2(51aD_4jzlf!ZQSpCrciet7HMosF{pUAN#BQTDSIK~xQWanJo% zS8UvYmG-^8{lT_7J7cNspP|*F?J_ygeD>Tq9HElVySaUWl1P>x5c)}EY^wCWcdytW zPy^T)hIoTrO?L%O1rR)5*ImkqS8}`w7P$T`o5i?7jvE{u$b`|7T_N-Sum_dv|E!VX zC-Bfgb{ZNQm&wh8<8m)R z?44e01FZUMASHdqD>cLEQ{rzCB@i&Jv{W0=Ef`S#*WBq(YY~GnAn8|qZg%|lSyxvP z&{{bB`4J$U0)Mqjmc7()9uX%7S1@W*&f)?O4EfjrqD}^`2~NDt^dnnS^QZV$_iF6A zSg#6v6X#N$Mw8^xiWoJ=-KYNL#tKYp^KCWZ|L^|8XqkyucFA_-tVjYnbJC{Qm`D6% zZI8AMYFae=eH&B>r1bK0kbw6w1$_N?cf>7;;Qsdds{bwEa?N=xX*=p+#VMV4cQ*?R zEQZjOShrWZ^=I>s70CYvfWW8e=@fh<&(hPk|K~E_yEM@x<=5{s(Ji>Nx2r&Vv1Aap z9DqIom3%j^?bAMnYGZaes-68p!g9ZcoGKW$qv@fTH32E^@*OyiukOjZaFCGQ&r`8? zG-aS?qi`EbYYuc^-erI#}vIK6BN9N5DD z%+7aLuAdcQL?iA{3=v4+Uf+7VB9&ZtEPEl@@czzImq2lb_62ReYlufbr^L0bKz$C7 zU9k4u_-;S7@lxC8O1l{FE=@2OPH}UO#<8 zwko)2OhHj1A=y{iIv|+z%m#TkmjSzOcQ?UUZ`=8uGrH_3;MMt`Gdsb2wxc5QxIOg z7PxH#5#z)?yKwlT2^6#GMqc%M`MRw-W{&|;C%KZwtL8t_33r&UJW_T3(-4gF`ZDVt zB;it%xWldLriglfMy?l>ZM{YPFKU1qx=gHR;sRjF_+?PhaWwG2AzD2B5`+f_ptmm} zI!Sk~xz4M>T)(??IM{s%!VfUgM`h4*C-}YDwV;iA@6lU3oTif$P=n)<*3EJ(UF>?!>yi z1IHy|cFj`Z(_RuV^Fd#S&L-Hd`WQmURh?Qo7IqWNwZF*i~yRlzt=t$gMqwmu@E zZ=1p>6K0GcaQAu29?SU9+Oar^(OO|o{CU7a7asy7!l{nHLlzaFX?Gty`l_H{u7=RJ ztDqw!FjmfT2{Yo7J?BFIF}Qn)*e@s$ytJeF=QU(%{41sJ$h#*L#+M&I@NnQ*LdX2OF#@_+fpZ0o2+CEhycWpjsV~58 zIso~wa3H5*v-!aVjBl% z679~=SE!pyf4AErBtogrS&S=Ne?TVArHx07$e}uRbkDYv`TQM|l zDPnkh;_Fs2C!i#pFbQd|o@bS5Tod;)&;e?rH;ix7N`9&#wktBB{`Z_GC7!MKp8;)V z_3CnFFpFW!nf;#Y)omCCndeN9NmT|%ny11oXD^K12DXnq5cjU#H3Ot@)I|SxL2g*? zwrjyXStRx0%8vC~{@E*$jeT2~PC(g73k=?_YPv$V*ON45{5v&og z`^fk0tQw4Ff9B;X$w^)uPgU=vaVY_ss7+8a+YGT#;1IeME$FCnrXCP_$<^~O3Z=jm z?LvU5b%L}({UMn*E*HdwGrN2dLAMAaXxMjX~5Do{ASQMVeBcmd1u>!AbT3Weq&~Fm69#<{@s^>8oUPUZ*cGyx3`RIS|4=kij7ij*Ms@=sX9#GN3OgD<1pq6c(*cpq zW~&rK?&A1a2pB}k`IC4U=&wG|CKWNqftN~dXlURkGDWSy?bO*(dZS6hLDGP9*6`QM zo;!C=>EigAy-)@y?b{Un83QipQ8BNt)*uHc&84GZgII&CY!TcRBF1E>ctT)40grERvb32HIPN;&T8Ka!fLM2uIOfOdSDD(5UcZc$Y$r`M9=b6!NBB5kjuh|tW ztpSH^_{`$Gi%TuoT+&oYul7?j6hW2 z(<<3y%Vzj4LqT`(Z)9#q$XxfI=UJaF@d$Dg8$+m4mFMWoVz?Yrcz9(}foE0%gyyk0 zrpr-=4z(~pd`PhD>JH?w8Zo1L>XMTqL&hJg&#)QF0i*0CPo{d<%;Qi{K|!?D30eVO zceF-7K#oghjsO12gIDMy+Fciyk<~=#_%Md>i$lYU3edv|hWNB3f{Gr95X%KdQ2!hE z1@7u^ic99q_ga=-%p)_&;7OOsam$b4Z6ZZwa9a$B)h8Mb@^&j$eS#*!;qgr1e5btJxOL&0SgJxe)lDF*@YiG%J7KYSHLz0LcL zBqqa`$c;Mlf=3z2wdVR8V{pF_{vi_1>!wL@iJ(3Ipo+Ekce|cgiroOa{lTkWW>^)N z%1|W-7WWgPmPO%hWIICeN$zHbuc+?6XZrw#TmIpGMgv1Ggl~xqGl6y5hwKtgLXS&* zyk2h!SOFSZ3CafNhUbO9&CiT^_ry8(G@Xw8h(k9%YBJC0FChWilVdBe9QlEOQ6aUx zX9I`Bg2pE|QRH2OZuCi4lhy8*-cewP@Uu|JNcaH2;U&y$_l6iozB2MlNb!k3g+Xzj`n@x7G7qj^uxePvh>iwd-g)D&RMXUe(+GuaMZelr)de z?TuUuweUJ)B=fq3wDF}NjqXK|LbG3>9XFPu7`z?wYY;A8SAsumT9Adbh58&JG8X=M z_Iwlq$exLb2_k`MA&6vpJCOWNR64LGd3ygRmay0w#e$^S1O4>{+5XRe9!9<+I#=BNL{ zfEJU?{MY~QH97$FCnif)(bx+8N@bXRD1ic^28Kjbx?nJ;db%st~)i%z2V%%qfbiP zChE559peGeg_?|U`(~;04ghu~FMfC}lJ{a}ysAJhcgE_VIG$%q=YF>d{0Dy)mwDnG zBjYail#v2ct-o(ihRk%Uk5q6ShRlo)>0JK7B?~R7)tMV$;Krgl5OK;t!i16cHZ9zM zN(dXU%Lt%I_0%Na6My>quMi;Aye2X&u^y1K|=cdg>`Lh!W1bI2X>8{w1GJgD)Or~`_0QZ)3BY&I`p9sFh$hLlOQ zrE^jY=Ec@gx8mp*rNSaWqO0!2)rZ3C&PxM;bN)|_aVp=WEG7A>t5+bJ*E%(~lM2NH zIhc}OIzR|c)n{Uev_oHsT*6k?*4A#Xe_k!&EDYB{V%oftiZFR8F7te;>K1N*`Gt5K z-`y{MO}GpnG&7&0GtpR)!d18!$944S_je|ALOUfPeXvw_AelUf9b1s_+y6U54EJD~ zjGK6T?v0cHE#|*d`j%Bzrh`$w&gk7p2O#VKRxQ|lJ=Q2?xrML#8K4w?babF(>{AV% z&A{OkHxic;rX!SX(eZ27F*TC>f88j=Jv;0dP)*=>Kt#(j6fOf>{Q5(@r?4z_O7mifkO^V0~_)PXg|~hvl3o@+4#%Z;Cbtzyx6D18@Zx zPCG|xPp;&xAB>NWzf86)b>OR54R6EA5(Bb6eckxbnR}ruAa90)7s-*(XD?hS^Bm^M z=jD(8s^{x7f&+qNf0BWzCm7B7pOUms14RNDmxPAPNJPgchPKBq_?; znsB9fo#2aj_%S|y{V56m6r7Y$DDd#6b^`N)&wp8B@f57!jg4>ZB5A^LNo?}9GU+7c@6F^ zht9tbt%a~Cx3VH$XvY(DCW_CL7x~=71@=rss!j|r5?1Q~+mDxCy)8&{q%@MmyPI zEb6-lraN9E|GnV%1Z4FGkMcmnEf$kuT-iP0)not4iXedO6;8NSH`ZJivKw639R_g# z5RQ z5Z+ev;=*uv#zX`ulFphaQFTCy=(;PSHupmpdqY3j1P)3rV|oCyD9>G;rkdp;N+ZQ3 zJ4D}-VZe~k7L?)(a|}*ELjV7#4{fkJGaESJMA{dtymK)tX@^?C0!FVW25pf}^w@`6 zGv+QOSq}`n`AkBs z4-}}`X7X9!N%jM;S2Y{c(ObqUnqAP!2Mh44?TKkwoJtt9|fQkfY zh2FO{qQ5*JLdWBtY@w7U%0yhfdUc7cAJ^O-@ zqH>*Q0m~(b=85-~>Ih9ZP}gSv6*NF{TyM^v!^X_a9aiAb-X~Mz-_6M7;qI zI)m>L2~Epv2EdxDc`97ge?CD}OR#2TAQ9%fbQe$K#^_3r!CyXCEfw9Dlui^zJKkdm zhEbrH>bWCJP6Kx|iRbQyI~Y$SS(^jQ*Wz*v?f8T7|Mr|T9T924aw3-!aybwm1L=vLSMpcCyv=-m|Gs11(UFzgHbr9=H@zjE%2pKuJq zSPlC)$i=(|ljBZ5|GjdFX&meKaXi5qkyy7#d^LBJ&H&DhS3M7Z^F!o1O>vXZP^E#O;@0{bV$idy%VgW9uP$p2(OAgn`1{{i~rV63OpzJ%)1aow@a0>oZ5uS?V z?t^g{@)MfQ;d}(c6yA6~aHR7Mk&yi^ylk{L6G(hW%}V=2qTf6_`us9-iAiuP+Ac9$ ze{Hnrd#UL(%Ejb^pL;nD)I=D*C< z#-Vw(N8s;LfmvZeLX#X$2vVkr_c6N&Ju>K7*x?!o!l*o?9$}b+l;Z9@dK<=_G2p^h zw}cs(0{;sryK|AhVMuh2G8&Pdqog3t=#YUp9Mw8fG*82j*>hu#b%f}!Q|W8 zS*jOK=0JKZO%N_km8RLdy1E9;o=u3~US}|Nf&+i6KoRE3!O6vdjoit6g4;=nFn@(d zu`k0%&X8PKP!7WQiJhPT?X1@mIY1sc(AN+k8us837lpFvUpNTBv<;CUQ{S?}kge+M z$Aet({OUg1YRpV6p(>30me9MME1v+3w2^XhcAfM;%$;~e3^@z>`Ir^!H*B~(NuPA)TmVS^fH405)pX?nF|ObLEhUPwq|ipD9c8JssV-ec zEA3h-x?0gXty3;hDyBt?7DY0tNvX8XSTnRKqtc3LQE5-BncsQlet-VKJMa4}=Q+=I z&gXm%9DIy^rT02nHi@iWGz*FqRR-LIo<3)2lAb^~U4|W|z1#G|01_%7D#|4+GMdu6 z)GM*YL~Vs@fctj@Pw|%kGcPrdiy%f};Wo_Zt%=Zo_9KDHy1O-4WRt zz^`fP4MHWrt(ZrDhjy1La)jOq62oLlz#9KQn8gQBe$D@u`jW1)b~&$vk^ow)909Q*sf- zcsp7L&fbIgOm{G;{*^N#`7^yKq!x6VZ_xPeKARFfXtU)gY!jl~29=hFmcEE!eQWg| zG-c`7q263Ids5*p+y9k&fQw-6+Wy$I1^Eua=yU=0X^sylDz}@Q7V05Dq{=RpH7bw+ zNrxN<(BOiDp!|TQiQgq(svFqEth2&!0bFLzfOhbkw1EzP26Ha_&L1V+J!%_j$4^`t zG`YLaq1pn~eA(<$MX(4+R_XG}c8oasBcNFx3(m(<)0nnh<`xJ*01{9Yw;;LIT%3k$ zJc)U9$=m{LoA*K9Prv1mJli)Q=*1M+6xV}fJ^&oi5*AQLeX7^$>l1Qm-!yV=!md#o zH2r;p_z^RJ;#uYZ_!+DNWi=Y7T|*uV^>eG3bLpK{Ra3hN$Xe8;EdV?`uxjplsN%xn zWIP-R@`EJh$^Wkn-e&772*0hs4rx>39EqCIs|WZ0oDmk7NC0a^`?^sW8)Ik55PE#| zHyZ;G4fWK!wL@|;y>11K3O!3GW(16mMjjr8y8uvXZ)h0XeZ<_g_n_~>SU#Wc8Iqlj zoG=V!EN88TDzNO$?FDdt+K04VZR8_&j-8(y*X4xa>(aq+ z1i20|dfy}o%+0&aEPB;E7RHA7)YR!>+PcEVzP`T5HVitvi(0;`v0jL?6G%Ar%56O(7$5nDyw9R-y z?%z`=E&~>Egs6Ch7ISc;Chn5Yr8^u7cq@Y8uihKJm78|(!l|=o&myfnhoX-VKqN|f z^mkV^06qE%S@P+~5%WKgukXkc)?d^#XDKv=Y$8-tG}G=7E)Y0tIgW-W(xfMAb8O#(Am(JnL0Ge2Bs&N&)K zIDpR_j>|28s}<~%_c8;%;z6^vIYV##% z{a62PPbM=pYq`lIc=2U7uik^hhYz~~P#%szhI?H)AT2U<}agD8WI*j#kSdC+9_|I zAAisT0C{h|byzDOfUCgEQmkt74fdcu6vz4HfC&g)1DuChY86rG7iO?```ZEN9)G^`E(X_9!M|xdMe#gZN zuuWeB|F$90c}KHtWml<=te5$+JAN!Zl1CO3qYSluS`#nwRKSwj+V;p0+3(Q?_A2LO zzDyUTl2wxK$ol3zzj_9TTsMG$Ln3<(@JP?a$2b3nmt_;e719x+;F7nu2oLZ!z~9Xf zwBn#|cDzn=&q4s#lnv>GPJ=MrCww*o?Du<+PIfI;o;$3JN-8*=&0Dj*fpt{$u>gvG5I8zUBh4*-UQXDS3>|4cnEpmtrb~9 zwK|(t-^n%QN9qqLR!B#ON(A(Q8fDR0$5_1=w=QO6p-yLY!4f7HbtcsOFhp1=Uj-x^ zKTPlp6hwv|@aS)zryKQH^U{=c`h`ECUSedmzNVzS-w*5spr)FaIo0MYC*3QiKVG^yTGcBnAR<%K_U}kxJl1Pwfwh z$&<&9T~m?Ig`n>%@P%sF;xTq0NhT{KCjY^M-N*=93d#VJ$MXSF1_+5exN2@;Sbg!^ z(NC0wh{Z`+jqU?_n|on`BVarXRS9o6L>3JfPMb|}1kG1c3K@lMK=L=1Qt*iSs-5}Kxr`|VG1hYHi0h}Ko zEXM_6(5{>_voH;8qJ`y0@cwI-?Hc70DGgxBQwWxdV2`leP`-mlwz2{ z$_&?BA#u}hD@pOFvn;Lb}NWt930BP!+6 zpb8RNP*9``kN&59z>J5B3;Uy|IQZ!OJDjesy_p|i%c42REN)D`4h0FmmSUCclE0R1 z`D)4ukCx6PeHRxOg!*pG)Ut+W$w0rppog&tprxrEXndHQi)TE15{GpJ!5=M1~|>~neKMg$NV4t4}# z6wcNXHsQNOVJ|D6GZRtwOUC$##)}>#-^2}<@0QI=GB5N;vy3fou-#y8uyy4C{KzGFVP1roxAPLxfbUo#mJoP4dG2wO;=>_3(Lmo~m z=_>Mx*?wUbw^`e^x25Bx{GXbM2pwH?{`&Rn4B%(lO)w0sNDv8&Pm~>0a$1T}ks$3fcFIZYz-{Sx*AfVzugDAGG2; zAHnVD;!C0YXU|UWO6vL-w_x>sO(FBid2j2>A)4Xxd0)PKK|qHcM?-@E0;gNKo(EI3 zf|E`Cbes=UulT?V7N4nW`X z5a8GZcclAZ`Y_pkC-eaQNAmK(vSm=vF;e5n(&!&IOT~18{WxX6-;*$x0upa2udEyf zk9yeACA#TFK&){`x;m2T5)WICu6a7AaNdiwjEmMtk*|T1KC?lWbp`yVrEqOLNhp^ zu0sS~0eCM6*5VN(8$8q%W&mJzbPs^70)Jc;Wj|Sn@B3N@ne|b24M4%l{ zaD}5lMN62L-th1HFfNz=`DfEQ&#$+D3zw@kY{Kwh^A+9vW38aL{3dX$ zA|njI_N#t>^?-$T0cz{|^Mo|^#j^d;8$KK%!9_sr7c6NXk--Zo8yE@gVDta!4aYYT z*w8+{7Sg?s9A$7`zXAf@BOK)4fm?D>)oykF%B6CcK8N%13w`OKg`8%{Sht%mu@m3ID*KdiJ)qLkXo9Wkv=OAM{&qZJ0*!Z!jEpW|j z`LocUJsCQzRrRZ)n}^$ONC014kiuu@#Y=PiSz8o!@6b5`Kv^rIF+eM9?N4K$8DJ%q ze+Ec)ZCHD%K#yjSQw&aIBK)3JDSmww;VIlX!=dW*u6WhXU=C31=n@m{W$(ceCA|rg zzXjG!?d6d?4kl|dg1y2W=`{;Gk%h6)i=6_*D?e-ZV67XGH?(%lVe$j`kxBs+(Y*u1 zc)^@o4F^F4C;cE1*mIW>K417(%pHW;yMHI#dcfmmv=sg*}P_w!a!48B~mv>F?7#jlV+(TL!XE9(}bkZEkaTAC{ zR$T;9_&Y%|Q@!@v#x6MP9Rfu7H{e&csR{5xC`LetxWTv)7QaQ$0(PmNCZsc&-#I5hNFad0Ypg`~00q(~L!0A>nQK-&?HrM;=vk|6G8;W++1T5d0gUnfuX&tE}Bb z>jLPQ`36ug!R11$q7MMOEc@qE?q2&BDrg0OK4l`1Bf|G@nX5aLxC&^u8h4VB;jot| zk$>;n-#xx9;+JV$U0_Zt1E+&4AP<}4wI)&}0y=jC)E71*14jT@n|7Y#GE+rPCvc3RK-mA$B4oh|;|h076sQKI4#{vw9}2T+v zyU*j(zj$f!KYMsfYJO~rc~o4yA4+Zccm39xl*(Ee#9}b!xKKR~mQA#p!g8MlYQG;5 zJ3z=j_=3koZeVkr(M<1T43k_!IReb60l&T?c8={6Vq#)t=ikOa0Oej3?-3OWSm(OHgp24j5Tyj1 zC>(BV6iazrsJU1WZU520tV#?-+MN!Ttc0h85{Opj_Hp zTX$*8QwmA;woSTvoB4_AvcTFU7=Oaq*YFx>%i+Ag<30defO-<|SZvh16aX`u5T6HN z*f;DvEDxdaC&4J_?%{ELof#Jj;eoRwT0!9W7{x z-`Rm{LOX{d_dV05v+zTT*m9qB8$k!+-2kOo@VTSIN1i_be4q#uhI(2GY!Yt3?EwzG zm5lGsVT2Nv3wSZ$)YWx)`k1Ib&xicHJeSwQaQu1%4FKHbrAwE(RA>}-?X=R|m{X<` zob8ZqA>IrG;00S?TWjk;Efj9g)xUsgMA~D4|o8= zDgaP(uh#e+>_lQ8uEiPti+EHPx2rhofhU1_?!>EQq3hhOTfb1-`e3)IsHoUTsjjT3 zsAszT*+gZz{3)CUOA!d5r=%_%?#Tq!((oa#uZJg-`N;Ynq)NH8Vyr+MXu;!Mw#vuC zcCvBsCD=QWoIw^!jfDj}0!@XiE?BVCH~bXyxz!(J=ESap1%6{T(CVnww)OS&tg265cZ%R$0kizW z@^b&zlop6+OXNzTSCa1A{VVnGq*BE*JZq$rXJiK;P6+K8eM#S5M^hg0bG2`OLS$!B_8OUN2KRCOtcYqK_FHH{D18A|5I;TYX++{9t9U zzke}#CQg^SIu;i_JMTo1YE++(S%$M7cu}j*nfbW8f1T?44Oq>c@414%aN#AbF^jB8 zIgQuT>&<$$oUhw`>;?`G`{g331!;W%U{Q=68>a^!9fwdM_R!e;ThxYr;Vl%4Q?;vk zfLNj|{h4=?>zZmAqb|(!ZX09Q-J5*Txws<6Uj9h!yWH0QX5kApYV}lq$Wq4`-}kr( zuOE{X_V7HrxiHMKBHrCm6Xco&sUp7e$RI^I;hLNpyH1V z?;(6Po&<-ijZ072)xb=I_dLfZUm=ClD3jMU`ovERlqJv(0OkZJiVxGT87!TPsW6>+ ziPH^0l$RxO;r0)|QE$St&c?*uRmMocT^ z;ic8#y{|N)Z?Aj*Ojp>3Su(Za?cmo&(pzOLAGdT1tfLsQX)dwY_6(QV^>KI=qiwK_ z;vT5S>H2K|Zl zwju{P9P}Dg;XScS#t>yF7sI;tTbaIf`7ct3jK-U1KuSgX+uHhj5 zq23KqA*QYi|{5_A@mqadgX=h zv-=`dpU*U9HN{83SBIQ;%qcG=>MGI2NVUEFh{)=%6@3yVS%bK2euVpN;6U z2I@?(i&xfXxt7Cq7$bifE$)hs1LH(xmT9R&j|f<7a?Xay&=cNFo!QU*;!+K+N{)Us z7hWw;Y)=$VW*VHXO{&Bow)B|;*h6!6hV@QSF9Atdb$8-@dBn*^o*KhVZhoB))r_)? z;T`Pa3+c<7Y1Zmm^mx1=5P)NP1}niNpO|mS1Ob{y_aXWusn!;?aNEx=T!SpZM3~Yj zNbIQ4#)sGoz~h`V#zw;em9_j@m|C^~H|V2$)pW>Q{I->Zly4W_ZX<#3g z;bTIo#&PINbEF|+J@8Elp_bSABQR&j<9xQF>a&9n!o61H=K0wm0a^;s$*)C>W^+|y z8`yU5fJ&}sEB<%913bdQ2HA$g$?Puf0L(K}jI>t-22_t?C$3di86$z&x#?R6G~9#+ zDe8tl0j@x?nDr>M#B zxLZ5J)rNEh$#~>6@Z9e^;Hl%o)foVy*P%yp9&b*NA()ax4W7-T_v=!d5u+|KYZ_=m zD`rK2>(h_qfMzYG7q}8YQog0nWrkefv?FUNcg7S@b>qqO8V#`a0BD&tx|e&?KA(az@3j?|${$2I^3& zIu+UJOp^oh82RN7#4bXWhldsKg%a%**7EA9rlmF4a0e;DGulwg=?az-MvkupnP8r2 zu`Xj&?wnJ96zCK9cZl9~!17Os{k#*G*&vI=e2<&w6#wusDO8qz25KdDwc+CMEPbRS z8FN**#J4$^eAK0%wc7_?qE~}%WspMg8~BO2$yjv$Y&tx`fOT=nQ!~&w50k(B4rfRT z-Gz@k0v#lIOzvb!0YhreO%}=3ne-Y>vZS7Jd_8LQT^&+$H+Mafj~>4FZnHHT(fG=j zet{$iknKX{3Y09<-m1E)y9f9%cQhK8s?pb@CY&0Y0RmJgAx%5U)q?crI4bo`0%^5y zyD)ZP?w+6Hrpuy8n7r!yGVR!+vA}=%cPwz)&V+NG20D`H=gqLBE_3`^nH|b76gfG? z#xwpP-jQ0>fmB=`YNv1`rG06XYR6K*MwVlz>>;`Y-E?g01reo8MfVL z>Yz69e|Jh;J+*-!V||fIynXU&2@DWXG0>b;_%;U{NCxqDC*Ixy6T<8fWGxCOSppaA z)CVh>v~1=Jod0(yf!z42_!}D!LlETUOL~f*@kWic9D>-vtpKHITKET+a023#Cn{d? zCE=k5C4*TfOP%b6;Jt#-K$)d`LH$&2Vo|ALW+k7tA|0}Sz&szNIJ{GhRr*gasL3qvY`4&XrEeRM~*cf?L2BEZb#>G(maEL9>!Y;n4U(BBdV4fV5*b z5__~xyXvaxRsit!sjJgx{2YZ#P~royH~-wp@23;WXsw`_W)je0uIzKcnja zyt;}ltH9F_Svd-jN*6tU=&?vON6$Ov{2U+5@}P3;ezxJ*NSw)&-*CXajg|~&fiMNS z=-V7DCs;exbpf|>iyMJibx&QrLQ;cKE|3Hh=c(aLuHTRY1-AK#@trIuVd%za+2PE< zwP4vPMlErC`MLO81R1rELcoJ9H0z-Wber~ZFTC$C?F4zERyFYEq(GS`kY)vIeN^YM z$bJT|3pcnpWG5g-|JDmwL0dv0n-7-r+#7!t zPhxmmWFYj)BLzu$Of z5^AOG!E2Jl5j(E@{T8{UnC+mneMz|2q}ymK5q>uhEZ$tanDT-iX)|6Bb}p|7^age2Z2JPh+#yp=;Wz({o$GFB7 z(HA!6P*TWo_@GEti5`pZ%WBp_dvNlFi<&<3fi=*mk|GwVxiDHX$@K*)>ilXsj7}B& z(CUz7RC-DmyNWp}A5KjhP;2MX24VItpgOW$9eucy0~R4 zS}}FJ&%okDglTitr{jv>zeoWZLU+@LInUH&@Lr_pT+n#$K;w?7{@u|1x$=12!lT(@ zEE-9;y2&33J$pI_&J54dk&lM^fd;>O{G-F`h*;>O*`+T5$=I4C5J~I4*X*6>Rgxi* z4?QR`e$9S}YeF4<Ro|M044{v0{#E|u9C!C{weW9`oHn8}4(bckFQjnd%mV5QV z*b(1YJ=laUjQPwDM@7KPXMf=*jN6pyn_;pLsngeAFr@e~{@gwE$(s73xrOKeH^yv^ z{S#I{<^fIGzK}o59T}~K3|mz|#e=Il3o0T{)_pjeEBm9304N1aK7;Z9;>r!l8H)&x z2Bay7@suk8)cP9gnTU{#Z5oq?>jp_cCaGtzCfK5KG8#yGjc0yy(x~V~{z0Rih2FP{ zIMsHC>4pFMCcMv`p5}U2xKyJ5HL(LI3 z(4qmxKBJi+O=bQ?HB^!T%y3&xr_bn%8!|sbTRsQCL;^*#9MFP3+rtnM_mwFE1=NO< z2hloXQ8JcjpYHkuIzjt#$#A9y_Y40{>mqQj(B?;n+X;nKPTCJIbs2goZt~>P9M|T{@_!Iu}RHjE+oFtugu_$_`Xr4pbU=3Q2yB;+Id7uA#0ARX_1q z%$5UnZB@6DTQVla!<>1tc|9!l1v>PHIQG}_-;l;*?pa9UVVuS;d?v_oWUWA={e5O3 zswH{w8A$$rBjPM(^b1xjH22NY;E+f6>)Y+D41z4#hL-C|VHm0c&sh?jL!x1Uhq2u^ zmB(4G0ZZU-lg<+w&jKhS~2)tVO#oZYjI?TmM@Y)bg^?6s|8Y zijd1q?@5?C{rb<)2kW4{dP<2sS&)O}1+HA03y5h_aEWb8AK0g^zz~1WAVE5iu*BQw zBL(e5W)w~xC00oK_}tG?)Oi6H0)5G84ewB01=?*kwN5L6@w9mI2rETo(_MonHv`^m z)Yo_2Z2P7>cBfro(Yr52+;MXqzXpWgNE-@Z4BpG3#04nXxK36+H zV=!KOMUB4Mrdp-*9`7jXO=`#wOk`kXzK2jt{t?_s#px*3~bk$ivu+eNT~% zn_egkBTF2IDxNwx{_&qT{c#rZ1JN9=2Kaj?n(`h!4)XulMrVwXO>c4wVvL0rF-I3Vz zGikJ(@d>qcZ@!PUoEkx9U>B&@-Y0?3*ih8ilvm5v+{I6S7Y7JKU{-GR(_oi*Ap+w1 zEZK42A?(rDM_(PFMX}!(M=4~N;}8SZdB3WI#O=t?P{^mLrT%&u#r|{XPBd{QoJxeiFmNn_JSw z=K^i!jZvPdi(S>DzQ%&31heu}H~@q(Z_!_q0|#?-LBjkqak2>&UbYfALCm?i&SfvV z&;T{!Rx#yhJ5#Ho##$?u2TMI9YC)m&9W0Imp*{U)*iz2A`|#2kI1ydmKz_6Z4N zDsJI664pgUl8(P{TQKMA)h~jN%@1AK$Rm$A@6R;PJmY2eO9?8uu8|w;@1Ki?{xie) zsOVzv=w`xB(3P8K}9i|k0p(DkAp4e2}t}e#=#>rwUaPutdJW4h29$;Ns_L2MrPZi9r}<6rT?So& zp;Q={;2{j(?Ts=d=aDnWVHu$ZV2x3*clh(ihNUb5>9mM%13moDCLRl@DEut~WxkJh zzxuxa(~q+}sR#P@+(`cR)>yFrG@MoheyxsX7w$RERo1i>D>-=IPNJKsl6B1-Y%m!U zUq-#qu;L-17M7AQmLa|+D7f6byyhfEjPnakTv+YbDn0VG2 zgfu!y?uhq5nGPF?48|2>N4_IA;utM6C?v6lC3g!Z4sE=uLUT6-4sq0;<%U1~s>Kq- zZ6EZ{sW>@WNm%`Ygo&vkqH0xR?4ze?p;J6qk7~Y0C*BvTMupT4-As4~09vZs={g+(OH4xV$zzBw|SW?K2 z($FxCXzR(R&6{~aENY+4|K2>c;WS1o4eYU5g)B$t;g?ymwH309q-3@iMij+wK~F_K zD7_np({1PY7mLZAYtWM(L30C|;uVZWvePPGbdp1<8246K=J5m(%JYt3&Yv9Y>O%Ii zJl>-Gl8-7HHJ=WWzQ*n!rfoNSL7-SzN68uaC5EzIfR7;X^B$0mJ-la(@D zzC54rAum|C{r9x@2bo&n2-(Csou!`i*=5RdhA3U`w)DVKE=F`3egAARTaojyTFxrM zu@3MHQxQkc)=`&pIq4tUw8MqDP+m3P@z*ZXY|?)ZCC>b@o!@dAQ#m0>IcgSWi?Ug! zs;?wS4?JR6eaD=6&szWKwppbrq7F9J=wxVboN9AFaRn>kw$~D2zb+I&J;cKM)|}Wp zMRHF*f~D$vG_*wo`KO^QoHU7=4tXxt^RI^Dpiim{zJ~AYJt&_gvF2jz=-a$?LHCbf zHaASfV%eJ+Mc*MH1eDh{Z$nVNJZ7^tUcwM1|AU9IKUzmk$-2cAaI`QSkz+)YBPb@K zd@vF=JB2b8xg}u{7x{F-JeK|Fzd{;x$f9u?aH!dv(_Sc)P=!ZHRh^fDmLc2dNw^S1 zv9}wtAEWG_7!Y8RMXi(zB;gjUM%%_XQJ8Re>7f*Q|AyzGQ$$eDGA2`T5lY3&MOf`h8AYJUxhtbi31J<0}tc?kets**^tu(JU zTqV-IJxnudf@StL)c91N1t|lXZy_9jN~G_fme3JlPjWP4DmLqI3~|^>>((0QeEUNw zth@~I2|j4jfQgs-DdMn&=~g~kX~19e)6W*2lsTDa-vu+}xwFiF$p{iJoNKaK)^&7% z4#5!o72-ZWJ}NX5gVD~^O{< z!W)OL-jjk((;7RA=}O#VZm=g%2MUcPe>v%P#Bx$5k9U^`zxq7BdrPX8sO4jmrosQJ zpZVpeQy<*3-AR;~JWLvWe!z*mUt~Q977L&VO3ZeSZkCQro1Gt}7PdFoETR@)ejFfS zKzqs9Z7jH*C*>Z+!l}4AU;l5P?OT~)e|%y&U-zhnSR@ok z9)-WOVs6OzdHJ87k9)GTyr_i+mL`4H5=7C|Yn0;6HmK8vnc-Kd7puzLd)qJDDOII6=9eKAEu8 zmpU0wfpQPXcmfXjr2YPZ!wYP#1uc1?JN_YC=!6(hxbwva(FY7+Ue!0OEpXZNeA zR$A$1q_dxdYpRaDTYX5+T%7my^>6>&W7Dgm+L5qy#lQD+&-ZK?+#)t_@w->Vc%Jz= P4F2E^OpX`-$>{+ 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 O;yKsX?Wn7K + + + + + From 8ed82712a05dbb6c127a7949072d358463411d90 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sat, 12 Apr 2025 21:13:04 -0700 Subject: [PATCH 15/27] hotfix: Fix logo resolution in Qt UI. --- src/qt_gui/about_dialog.ui | 2 +- src/qt_gui/check_update.cpp | 2 +- src/shadps4.qrc | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qt_gui/about_dialog.ui b/src/qt_gui/about_dialog.ui index 3842513a5..804f0aea2 100644 --- a/src/qt_gui/about_dialog.ui +++ b/src/qt_gui/about_dialog.ui @@ -35,7 +35,7 @@ - :/images/shadps4.ico + :/images/shadps4.svg true diff --git a/src/qt_gui/check_update.cpp b/src/qt_gui/check_update.cpp index 7d3a42798..a823eedab 100644 --- a/src/qt_gui/check_update.cpp +++ b/src/qt_gui/check_update.cpp @@ -188,7 +188,7 @@ void CheckUpdate::setupUI(const QString& downloadUrl, const QString& latestDate, QHBoxLayout* titleLayout = new QHBoxLayout(); QLabel* imageLabel = new QLabel(this); - QPixmap pixmap(":/images/shadps4.ico"); + QPixmap pixmap(":/images/shadps4.svg"); imageLabel->setPixmap(pixmap); imageLabel->setScaledContents(true); imageLabel->setFixedSize(50, 50); diff --git a/src/shadps4.qrc b/src/shadps4.qrc index 83dea01c4..81a36af34 100644 --- a/src/shadps4.qrc +++ b/src/shadps4.qrc @@ -1,6 +1,7 @@ images/shadps4.ico + images/shadps4.svg images/about_icon.png images/dump_icon.png images/play_icon.png From 6c2574364b7d8907087759c2961d36859010ec43 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 13 Apr 2025 08:12:02 -0700 Subject: [PATCH 16/27] libraries: Reduce some controller log spam. (#2777) --- src/core/libraries/move/move.cpp | 8 +++++++- src/core/libraries/pad/pad.cpp | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/libraries/move/move.cpp b/src/core/libraries/move/move.cpp index 626fed9b4..500d89586 100644 --- a/src/core/libraries/move/move.cpp +++ b/src/core/libraries/move/move.cpp @@ -9,7 +9,7 @@ namespace Libraries::Move { int PS4_SYSV_ABI sceMoveOpen() { - LOG_ERROR(Lib_Move, "(STUBBED) called"); + LOG_TRACE(Lib_Move, "(STUBBED) called"); return ORBIS_FAIL; } @@ -18,6 +18,11 @@ int PS4_SYSV_ABI sceMoveGetDeviceInfo() { return ORBIS_OK; } +int PS4_SYSV_ABI sceMoveReadStateLatest() { + LOG_TRACE(Lib_Move, "(STUBBED) called"); + return ORBIS_OK; +} + int PS4_SYSV_ABI sceMoveReadStateRecent() { LOG_TRACE(Lib_Move, "(STUBBED) called"); return ORBIS_OK; @@ -36,6 +41,7 @@ int PS4_SYSV_ABI sceMoveInit() { void RegisterlibSceMove(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("HzC60MfjJxU", "libSceMove", 1, "libSceMove", 1, 1, sceMoveOpen); LIB_FUNCTION("GWXTyxs4QbE", "libSceMove", 1, "libSceMove", 1, 1, sceMoveGetDeviceInfo); + LIB_FUNCTION("ttU+JOhShl4", "libSceMove", 1, "libSceMove", 1, 1, sceMoveReadStateLatest); LIB_FUNCTION("f2bcpK6kJfg", "libSceMove", 1, "libSceMove", 1, 1, sceMoveReadStateRecent); LIB_FUNCTION("tsZi60H4ypY", "libSceMove", 1, "libSceMove", 1, 1, sceMoveTerm); LIB_FUNCTION("j1ITE-EoJmE", "libSceMove", 1, "libSceMove", 1, 1, sceMoveInit); diff --git a/src/core/libraries/pad/pad.cpp b/src/core/libraries/pad/pad.cpp index 2e5973144..5dfc68e90 100644 --- a/src/core/libraries/pad/pad.cpp +++ b/src/core/libraries/pad/pad.cpp @@ -250,7 +250,6 @@ int PS4_SYSV_ABI scePadMbusTerm() { } int PS4_SYSV_ABI scePadOpen(s32 userId, s32 type, s32 index, const OrbisPadOpenParam* pParam) { - LOG_INFO(Lib_Pad, "(DUMMY) called user_id = {} type = {} index = {}", userId, type, index); if (userId == -1) { return ORBIS_PAD_ERROR_DEVICE_NO_HANDLE; } @@ -261,6 +260,7 @@ int PS4_SYSV_ABI scePadOpen(s32 userId, s32 type, s32 index, const OrbisPadOpenP if (type != ORBIS_PAD_PORT_TYPE_STANDARD && type != ORBIS_PAD_PORT_TYPE_REMOTE_CONTROL) return ORBIS_PAD_ERROR_DEVICE_NOT_CONNECTED; } + LOG_INFO(Lib_Pad, "(DUMMY) called user_id = {} type = {} index = {}", userId, type, index); scePadResetLightBar(1); return 1; // dummy } From aec6e330dc339de856deb77d8711caaad539928f Mon Sep 17 00:00:00 2001 From: Vinicius Rangel Date: Sun, 13 Apr 2025 13:27:20 -0300 Subject: [PATCH 17/27] Update ImGui submodule (#2779) * update imgui submodule * fix imgui breaking changes * update ffmpeg-core submodule --- externals/dear_imgui | 2 +- externals/ffmpeg-core | 2 +- src/core/devtools/widget/text_editor.cpp | 59 ++++++++++-------------- src/imgui/imgui_std.h | 4 +- 4 files changed, 29 insertions(+), 38 deletions(-) diff --git a/externals/dear_imgui b/externals/dear_imgui index 636cd4a7d..f4d935909 160000 --- a/externals/dear_imgui +++ b/externals/dear_imgui @@ -1 +1 @@ -Subproject commit 636cd4a7d623a2bc9bf59bb3acbb4ca075befba3 +Subproject commit f4d9359095eff3eb03f685921edc1cf0e37b1687 diff --git a/externals/ffmpeg-core b/externals/ffmpeg-core index 42557a704..b0de1dcca 160000 --- a/externals/ffmpeg-core +++ b/externals/ffmpeg-core @@ -1 +1 @@ -Subproject commit 42557a704720d1b7d85c03bff0c2d369a61848da +Subproject commit b0de1dcca26c0ebfb8011b8e59dd17fc399db0ff diff --git a/src/core/devtools/widget/text_editor.cpp b/src/core/devtools/widget/text_editor.cpp index 7171cac47..12031d1ef 100644 --- a/src/core/devtools/widget/text_editor.cpp +++ b/src/core/devtools/widget/text_editor.cpp @@ -627,65 +627,56 @@ void TextEditor::HandleKeyboardInputs() { io.WantCaptureKeyboard = true; io.WantTextInput = true; - if (!IsReadOnly() && ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Z))) + if (!IsReadOnly() && ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Z)) Undo(); - else if (!IsReadOnly() && !ctrl && !shift && alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Backspace))) + else if (!IsReadOnly() && !ctrl && !shift && alt && ImGui::IsKeyPressed(ImGuiKey_Backspace)) Undo(); - else if (!IsReadOnly() && ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Y))) + else if (!IsReadOnly() && ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Y)) Redo(); - else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_UpArrow))) + else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_UpArrow)) MoveUp(1, shift); - else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_DownArrow))) + else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_DownArrow)) MoveDown(1, shift); - else if (!alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_LeftArrow))) + else if (!alt && ImGui::IsKeyPressed(ImGuiKey_LeftArrow)) MoveLeft(1, shift, ctrl); - else if (!alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_RightArrow))) + else if (!alt && ImGui::IsKeyPressed(ImGuiKey_RightArrow)) MoveRight(1, shift, ctrl); - else if (!alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageUp))) + else if (!alt && ImGui::IsKeyPressed(ImGuiKey_PageUp)) MoveUp(GetPageSize() - 4, shift); - else if (!alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_PageDown))) + else if (!alt && ImGui::IsKeyPressed(ImGuiKey_PageDown)) MoveDown(GetPageSize() - 4, shift); - else if (!alt && ctrl && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home))) + else if (!alt && ctrl && ImGui::IsKeyPressed(ImGuiKey_Home)) MoveTop(shift); - else if (ctrl && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End))) + else if (ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_End)) MoveBottom(shift); - else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Home))) + else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_Home)) MoveHome(shift); - else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_End))) + else if (!ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_End)) MoveEnd(shift); - else if (!IsReadOnly() && !ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Delete))) + else if (!IsReadOnly() && !ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Delete)) Delete(); else if (!IsReadOnly() && !ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Backspace))) + ImGui::IsKeyPressed(ImGuiKey_Backspace)) Backspace(); - else if (!ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Insert))) + else if (!ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Insert)) mOverwrite ^= true; - else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Insert))) + else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Insert)) Copy(); - else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_C))) + else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_C)) Copy(); - else if (!IsReadOnly() && !ctrl && shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Insert))) + else if (!IsReadOnly() && !ctrl && shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Insert)) Paste(); - else if (!IsReadOnly() && ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_V))) + else if (!IsReadOnly() && ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_V)) Paste(); - else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_X))) + else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_X)) Cut(); - else if (!ctrl && shift && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Delete))) + else if (!ctrl && shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Delete)) Cut(); - else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_A))) + else if (ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_A)) SelectAll(); - else if (!IsReadOnly() && !ctrl && !shift && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Enter))) + else if (!IsReadOnly() && !ctrl && !shift && !alt && ImGui::IsKeyPressed(ImGuiKey_Enter)) EnterCharacter('\n', false); - else if (!IsReadOnly() && !ctrl && !alt && - ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Tab))) + else if (!IsReadOnly() && !ctrl && !alt && ImGui::IsKeyPressed(ImGuiKey_Tab)) EnterCharacter('\t', shift); if (!IsReadOnly() && !io.InputQueueCharacters.empty()) { diff --git a/src/imgui/imgui_std.h b/src/imgui/imgui_std.h index cd7208064..743702657 100644 --- a/src/imgui/imgui_std.h +++ b/src/imgui/imgui_std.h @@ -50,14 +50,14 @@ inline void KeepWindowInside(ImVec2 display_size = GetIO().DisplaySize) { } inline void KeepNavHighlight() { - GetCurrentContext()->NavDisableHighlight = false; + GetCurrentContext()->NavCursorVisible = true; } inline void SetItemCurrentNavFocus(const ImGuiID id = -1) { const auto ctx = GetCurrentContext(); SetFocusID(id == -1 ? ctx->LastItemData.ID : id, ctx->CurrentWindow); ctx->NavInitResult.Clear(); - ctx->NavDisableHighlight = false; + ctx->NavCursorVisible = true; } inline void DrawPrettyBackground() { From 14fad28a9bc3bbf68b53b0c63937c85bc1eafc2e Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 13 Apr 2025 12:10:24 -0700 Subject: [PATCH 18/27] misc: Few small fixes. (#2780) * qt: Use PNG file for logo. * build: Fix some CMake issues. --- CMakeLists.txt | 12 +++++------- REUSE.toml | 1 + src/images/shadps4.png | Bin 0 -> 35291 bytes src/qt_gui/about_dialog.ui | 2 +- src/qt_gui/check_update.cpp | 2 +- src/shadps4.qrc | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 src/images/shadps4.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 37492eeb3..63dc7b4c3 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) if(APPLE) list(APPEND ADDITIONAL_LANGUAGES OBJC) # Starting with 15.4, Rosetta 2 has support for all the necessary instruction sets. - set(CMAKE_OSX_DEPLOYMENT_TARGET 15.4) + set(CMAKE_OSX_DEPLOYMENT_TARGET 15.4 CACHE STRING "") endif() if (NOT CMAKE_BUILD_TYPE) @@ -105,11 +105,8 @@ if (CLANG_FORMAT) unset(CCOMMENT) endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - # generate git revision information -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules/") -include(GetGitRevisionDescription) +include("${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules/GetGitRevisionDescription.cmake") get_git_head_revision(GIT_REF_SPEC GIT_REV) git_describe(GIT_DESC --always --long --dirty) git_branch_name(GIT_BRANCH) @@ -209,6 +206,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_ message("end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(Boost 1.84.0 CONFIG) find_package(FFmpeg 5.1.2 MODULE) find_package(fmt 10.2.0 CONFIG) @@ -229,10 +227,10 @@ find_package(ZLIB 1.3 MODULE) find_package(Zydis 5.0.0 CONFIG) find_package(pugixml 1.14 CONFIG) find_package(libusb 1.0.27 MODULE) - if (APPLE) find_package(date 3.0.1 CONFIG) endif() +list(POP_BACK CMAKE_MODULE_PATH) # Note: Windows always has these functions through winpthreads include(CheckSymbolExists) @@ -1174,7 +1172,7 @@ target_include_directories(shadps4 PRIVATE ${HOST_SHADERS_INCLUDE}) # embed resources -include(CMakeRC) +include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CMakeRC.cmake") cmrc_add_resource_library(embedded-resources ALIAS res::embedded NAMESPACE res diff --git a/REUSE.toml b/REUSE.toml index d17594e4d..662987611 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -57,6 +57,7 @@ path = [ "src/images/utils_icon.png", "src/images/shadPS4.icns", "src/images/shadps4.ico", + "src/images/shadps4.png", "src/images/net.shadps4.shadPS4.svg", "src/images/themes_icon.png", "src/images/update_icon.png", diff --git a/src/images/shadps4.png b/src/images/shadps4.png new file mode 100644 index 0000000000000000000000000000000000000000..037732e3b14d6a97574ce29956c703a6ce7089ac GIT binary patch literal 35291 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 i4Ok5|w_0000 - :/images/shadps4.svg + :/images/shadps4.png true diff --git a/src/qt_gui/check_update.cpp b/src/qt_gui/check_update.cpp index a823eedab..550fdddb5 100644 --- a/src/qt_gui/check_update.cpp +++ b/src/qt_gui/check_update.cpp @@ -188,7 +188,7 @@ void CheckUpdate::setupUI(const QString& downloadUrl, const QString& latestDate, QHBoxLayout* titleLayout = new QHBoxLayout(); QLabel* imageLabel = new QLabel(this); - QPixmap pixmap(":/images/shadps4.svg"); + QPixmap pixmap(":/images/shadps4.png"); imageLabel->setPixmap(pixmap); imageLabel->setScaledContents(true); imageLabel->setFixedSize(50, 50); diff --git a/src/shadps4.qrc b/src/shadps4.qrc index 81a36af34..2aee394c8 100644 --- a/src/shadps4.qrc +++ b/src/shadps4.qrc @@ -1,7 +1,7 @@ images/shadps4.ico - images/shadps4.svg + images/shadps4.png images/about_icon.png images/dump_icon.png images/play_icon.png From d188d14e197ccc05414106ad2d089701d039267d Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 13 Apr 2025 12:18:28 -0700 Subject: [PATCH 19/27] hotfix: Update discord-rpc to remove invasive macOS minimum linker flag. --- externals/discord-rpc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/externals/discord-rpc b/externals/discord-rpc index d3b5af882..19f66e6dc 160000 --- a/externals/discord-rpc +++ b/externals/discord-rpc @@ -1 +1 @@ -Subproject commit d3b5af8827031f3bccbf8c15d5dc1bfdc9467f17 +Subproject commit 19f66e6dcabb2268965f453db9e5774ede43238f From ec515ad113d344fb6d9c498d7f547bc18e97348c Mon Sep 17 00:00:00 2001 From: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Date: Sun, 13 Apr 2025 19:08:27 -0500 Subject: [PATCH 20/27] Implement sceVideoOutGetEventCount and sceVideoOutDeleteVblankEvent (#2753) * Implement sceVideoOutDeleteVblankEvent * Implement sceVideoOutGetEventCount Based on decompilation, needs testing. I also tidied up some types for other functions in here. * Change hexadecimal numbers to lowercase A minor change to make sure my implementation follows the formatting standards seen in https://github.com/shadps4-emu/shadPS4/pull/2423 --- src/core/libraries/videoout/video_out.cpp | 33 +++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/core/libraries/videoout/video_out.cpp b/src/core/libraries/videoout/video_out.cpp index 219d0886b..3c839dadd 100644 --- a/src/core/libraries/videoout/video_out.cpp +++ b/src/core/libraries/videoout/video_out.cpp @@ -104,6 +104,20 @@ s32 PS4_SYSV_ABI sceVideoOutAddVblankEvent(Kernel::SceKernelEqueue eq, s32 handl return ORBIS_OK; } +s32 PS4_SYSV_ABI sceVideoOutDeleteVblankEvent(Kernel::SceKernelEqueue eq, s32 handle) { + auto* port = driver->GetPort(handle); + if (port == nullptr) { + return ORBIS_VIDEO_OUT_ERROR_INVALID_HANDLE; + } + + if (eq == nullptr) { + return ORBIS_VIDEO_OUT_ERROR_INVALID_EVENT_QUEUE; + } + eq->RemoveEvent(handle, Kernel::SceKernelEvent::Filter::VideoOut); + port->vblank_events.erase(find(port->vblank_events.begin(), port->vblank_events.end(), eq)); + return ORBIS_OK; +} + s32 PS4_SYSV_ABI sceVideoOutRegisterBuffers(s32 handle, s32 startIndex, void* const* addresses, s32 bufferNum, const BufferAttribute* attribute) { if (!addresses || !attribute) { @@ -166,7 +180,7 @@ s32 PS4_SYSV_ABI sceVideoOutSubmitFlip(s32 handle, s32 bufferIndex, s32 flipMode return ORBIS_OK; } -int PS4_SYSV_ABI sceVideoOutGetEventId(const Kernel::SceKernelEvent* ev) { +s32 PS4_SYSV_ABI sceVideoOutGetEventId(const Kernel::SceKernelEvent* ev) { if (ev == nullptr) { return ORBIS_VIDEO_OUT_ERROR_INVALID_ADDRESS; } @@ -194,7 +208,7 @@ int PS4_SYSV_ABI sceVideoOutGetEventId(const Kernel::SceKernelEvent* ev) { } } -int PS4_SYSV_ABI sceVideoOutGetEventData(const Kernel::SceKernelEvent* ev, int64_t* data) { +s32 PS4_SYSV_ABI sceVideoOutGetEventData(const Kernel::SceKernelEvent* ev, s64* data) { if (ev == nullptr || data == nullptr) { return ORBIS_VIDEO_OUT_ERROR_INVALID_ADDRESS; } @@ -211,6 +225,17 @@ int PS4_SYSV_ABI sceVideoOutGetEventData(const Kernel::SceKernelEvent* ev, int64 return ORBIS_OK; } +s32 PS4_SYSV_ABI sceVideoOutGetEventCount(const Kernel::SceKernelEvent* ev) { + if (ev == nullptr) { + return ORBIS_VIDEO_OUT_ERROR_INVALID_ADDRESS; + } + if (ev->filter != Kernel::SceKernelEvent::Filter::VideoOut) { + return ORBIS_VIDEO_OUT_ERROR_INVALID_EVENT; + } + + return (ev->data >> 0xc) & 0xf; +} + s32 PS4_SYSV_ABI sceVideoOutGetFlipStatus(s32 handle, FlipStatus* status) { if (!status) { LOG_ERROR(Lib_VideoOut, "Flip status is null"); @@ -447,12 +472,16 @@ void RegisterLib(Core::Loader::SymbolsResolver* sym) { LIB_FUNCTION("U2JJtSqNKZI", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutGetEventId); LIB_FUNCTION("rWUTcKdkUzQ", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutGetEventData); + LIB_FUNCTION("Mt4QHHkxkOc", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, + sceVideoOutGetEventCount); LIB_FUNCTION("DYhhWbJSeRg", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutColorSettingsSetGamma); LIB_FUNCTION("pv9CI5VC+R0", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutAdjustColor); LIB_FUNCTION("-Ozn0F1AFRg", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutDeleteFlipEvent); + LIB_FUNCTION("oNOQn3knW6s", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, + sceVideoOutDeleteVblankEvent); LIB_FUNCTION("pjkDsgxli6c", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, sceVideoOutModeSetAny_); LIB_FUNCTION("N1bEoJ4SRw4", "libSceVideoOut", 1, "libSceVideoOut", 0, 0, From fb146f2a2057795957fb341d3d046efde34f2f2a Mon Sep 17 00:00:00 2001 From: davidantunes23 <147332596+davidantunes23@users.noreply.github.com> Date: Mon, 14 Apr 2025 07:17:28 +0100 Subject: [PATCH 21/27] Fix #2613: Game icon size not working properly on grid view (#2759) * Fix #2613: Game icon size not working properly on grid view When you select grid view mode and try to change the game icon size, the icons change to the wrong size, or don't change at all. To solve this I added a line to call the function that populates the game grid with the games when the user changes the icon size. That way the size of the icons is updated to match the size selected by the user, which is the intended behaviour. I also added code to update the check on the size when changing view mode. * Fix #2613: fixed clang format issue --- src/qt_gui/main_window.cpp | 59 ++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 60ab58274..36037fd4c 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -516,9 +516,11 @@ void MainWindow::CreateConnects() { Config::setIconSize(36); Config::setSliderPosition(0); } else { + m_game_grid_frame->icon_size = 69; ui->sizeSlider->setValue(0); // icone_size - 36 Config::setIconSizeGrid(69); Config::setSliderPositionGrid(0); + m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false); } }); @@ -529,9 +531,11 @@ void MainWindow::CreateConnects() { Config::setIconSize(64); Config::setSliderPosition(28); } else { + m_game_grid_frame->icon_size = 97; ui->sizeSlider->setValue(28); Config::setIconSizeGrid(97); Config::setSliderPositionGrid(28); + m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false); } }); @@ -542,9 +546,11 @@ void MainWindow::CreateConnects() { Config::setIconSize(128); Config::setSliderPosition(92); } else { + m_game_grid_frame->icon_size = 161; ui->sizeSlider->setValue(92); - Config::setIconSizeGrid(160); - Config::setSliderPositionGrid(91); + Config::setIconSizeGrid(161); + Config::setSliderPositionGrid(92); + m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false); } }); @@ -555,9 +561,11 @@ void MainWindow::CreateConnects() { Config::setIconSize(256); Config::setSliderPosition(220); } else { + m_game_grid_frame->icon_size = 256; ui->sizeSlider->setValue(220); Config::setIconSizeGrid(256); Config::setSliderPositionGrid(220); + m_game_grid_frame->PopulateGameGrid(m_game_info->m_games, false); } }); // List @@ -577,6 +585,7 @@ void MainWindow::CreateConnects() { ui->sizeSlider->setEnabled(true); ui->sizeSlider->setSliderPosition(slider_pos); ui->mw_searchbar->setText(""); + SetLastIconSizeBullet(); }); // Grid connect(ui->setlistModeGridAct, &QAction::triggered, m_dock_widget.data(), [this]() { @@ -595,6 +604,7 @@ void MainWindow::CreateConnects() { ui->sizeSlider->setEnabled(true); ui->sizeSlider->setSliderPosition(slider_pos_grid); ui->mw_searchbar->setText(""); + SetLastIconSizeBullet(); }); // Elf Viewer connect(ui->setlistElfAct, &QAction::triggered, m_dock_widget.data(), [this]() { @@ -606,6 +616,7 @@ void MainWindow::CreateConnects() { isTableList = false; ui->sizeSlider->setDisabled(true); Config::setTableMode(2); + SetLastIconSizeBullet(); }); // Cheats/Patches Download. @@ -1031,19 +1042,37 @@ void MainWindow::SetLastUsedTheme() { void MainWindow::SetLastIconSizeBullet() { // set QAction bullet point if applicable int lastSize = Config::getIconSize(); - switch (lastSize) { - case 36: - ui->setIconSizeTinyAct->setChecked(true); - break; - case 64: - ui->setIconSizeSmallAct->setChecked(true); - break; - case 128: - ui->setIconSizeMediumAct->setChecked(true); - break; - case 256: - ui->setIconSizeLargeAct->setChecked(true); - break; + int lastSizeGrid = Config::getIconSizeGrid(); + if (isTableList) { + switch (lastSize) { + case 36: + ui->setIconSizeTinyAct->setChecked(true); + break; + case 64: + ui->setIconSizeSmallAct->setChecked(true); + break; + case 128: + ui->setIconSizeMediumAct->setChecked(true); + break; + case 256: + ui->setIconSizeLargeAct->setChecked(true); + break; + } + } else { + switch (lastSizeGrid) { + case 69: + ui->setIconSizeTinyAct->setChecked(true); + break; + case 97: + ui->setIconSizeSmallAct->setChecked(true); + break; + case 161: + ui->setIconSizeMediumAct->setChecked(true); + break; + case 256: + ui->setIconSizeLargeAct->setChecked(true); + break; + } } } From 657073b9e217d4005235d2089af234ab7864a7e7 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:46:10 -0700 Subject: [PATCH 22/27] libraries: Initial Audio3d implementation. (#2776) * feat: Audio3d * feat: Audio3d * audio3d: disable output * audio3d: Implement central Audio3d output. * audio3d: Ignore AudioOut already initialized error. * audio3d: Convert and retain sample buffers when queued. * audio3d: Treat object audio as single channel. * audio3d: Clean up. --------- Co-authored-by: auser1337 <154299690+auser1337@users.noreply.github.com> --- CMakeLists.txt | 2 - src/core/libraries/audio/audioout.cpp | 3 +- src/core/libraries/audio/audioout.h | 10 +- src/core/libraries/audio3d/audio3d.cpp | 797 +++++++++++++------- src/core/libraries/audio3d/audio3d.h | 194 ++--- src/core/libraries/audio3d/audio3d_error.h | 2 - src/core/libraries/audio3d/audio3d_impl.cpp | 13 - src/core/libraries/audio3d/audio3d_impl.h | 16 - 8 files changed, 637 insertions(+), 400 deletions(-) delete mode 100644 src/core/libraries/audio3d/audio3d_impl.cpp delete mode 100644 src/core/libraries/audio3d/audio3d_impl.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 63dc7b4c3..0ea8688df 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -450,8 +450,6 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp src/core/libraries/audio3d/audio3d.cpp src/core/libraries/audio3d/audio3d.h src/core/libraries/audio3d/audio3d_error.h - src/core/libraries/audio3d/audio3d_impl.cpp - src/core/libraries/audio3d/audio3d_impl.h src/core/libraries/game_live_streaming/gamelivestreaming.cpp src/core/libraries/game_live_streaming/gamelivestreaming.h src/core/libraries/remote_play/remoteplay.cpp diff --git a/src/core/libraries/audio/audioout.cpp b/src/core/libraries/audio/audioout.cpp index dea8115e9..92488443f 100644 --- a/src/core/libraries/audio/audioout.cpp +++ b/src/core/libraries/audio/audioout.cpp @@ -191,6 +191,7 @@ int PS4_SYSV_ABI sceAudioOutGetPortState(s32 handle, OrbisAudioOutPortState* sta case OrbisAudioOutPort::Main: case OrbisAudioOutPort::Bgm: case OrbisAudioOutPort::Voice: + case OrbisAudioOutPort::Audio3d: state->output = 1; state->channel = port.format_info.num_channels > 2 ? 2 : port.format_info.num_channels; break; @@ -316,7 +317,7 @@ s32 PS4_SYSV_ABI sceAudioOutOpen(UserService::OrbisUserServiceUserId user_id, return ORBIS_AUDIO_OUT_ERROR_NOT_INIT; } if ((port_type < OrbisAudioOutPort::Main || port_type > OrbisAudioOutPort::Padspk) && - (port_type != OrbisAudioOutPort::Aux)) { + (port_type != OrbisAudioOutPort::Audio3d && port_type != OrbisAudioOutPort::Aux)) { LOG_ERROR(Lib_AudioOut, "Invalid port type"); return ORBIS_AUDIO_OUT_ERROR_INVALID_PORT_TYPE; } diff --git a/src/core/libraries/audio/audioout.h b/src/core/libraries/audio/audioout.h index 5eafb43a1..7fcc25095 100644 --- a/src/core/libraries/audio/audioout.h +++ b/src/core/libraries/audio/audioout.h @@ -20,7 +20,15 @@ class PortBackend; constexpr s32 SCE_AUDIO_OUT_NUM_PORTS = 22; constexpr s32 SCE_AUDIO_OUT_VOLUME_0DB = 32768; // max volume value -enum class OrbisAudioOutPort { Main = 0, Bgm = 1, Voice = 2, Personal = 3, Padspk = 4, Aux = 127 }; +enum class OrbisAudioOutPort { + Main = 0, + Bgm = 1, + Voice = 2, + Personal = 3, + Padspk = 4, + Audio3d = 126, + Aux = 127, +}; enum class OrbisAudioOutParamFormat : u32 { S16Mono = 0, diff --git a/src/core/libraries/audio3d/audio3d.cpp b/src/core/libraries/audio3d/audio3d.cpp index d896524c6..646c28949 100644 --- a/src/core/libraries/audio3d/audio3d.cpp +++ b/src/core/libraries/audio3d/audio3d.cpp @@ -1,8 +1,13 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include +#include + +#include "common/assert.h" #include "common/logging/log.h" #include "core/libraries/audio/audioout.h" +#include "core/libraries/audio/audioout_error.h" #include "core/libraries/audio3d/audio3d.h" #include "core/libraries/audio3d/audio3d_error.h" #include "core/libraries/error_codes.h" @@ -10,331 +15,577 @@ namespace Libraries::Audio3d { -int PS4_SYSV_ABI sceAudio3dInitialize(s64 iReserved) { - LOG_INFO(Lib_Audio3d, "iReserved = {}", iReserved); - return ORBIS_OK; +static constexpr u32 AUDIO3D_SAMPLE_RATE = 48000; + +static constexpr AudioOut::OrbisAudioOutParamFormat AUDIO3D_OUTPUT_FORMAT = + AudioOut::OrbisAudioOutParamFormat::S16Stereo; +static constexpr u32 AUDIO3D_OUTPUT_NUM_CHANNELS = 2; +static constexpr u32 AUDIO3D_OUTPUT_BUFFER_FRAMES = 0x100; + +static std::unique_ptr state; + +s32 PS4_SYSV_ABI sceAudio3dAudioOutClose(const s32 handle) { + LOG_INFO(Lib_Audio3d, "called, handle = {}", handle); + return AudioOut::sceAudioOutClose(handle); } -int PS4_SYSV_ABI sceAudio3dTerminate() { - // TODO: When not initialized or some ports still open, return ORBIS_AUDIO3D_ERROR_NOT_READY - LOG_INFO(Lib_Audio3d, "called"); - return ORBIS_OK; -} - -void PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* parameters) { - if (parameters == nullptr) { - LOG_ERROR(Lib_Audio3d, "Invalid OpenParameters ptr"); - return; - } - - parameters->size_this = sizeof(OrbisAudio3dOpenParameters); - parameters->granularity = 256; - parameters->rate = OrbisAudio3dRate::Rate48000; - parameters->max_objects = 512; - parameters->queue_depth = 2; - parameters->buffer_mode = OrbisAudio3dBufferMode::AdvanceAndPush; - parameters->num_beds = 2; -} - -int PS4_SYSV_ABI sceAudio3dPortOpen(OrbisUserServiceUserId iUserId, - const OrbisAudio3dOpenParameters* pParameters, - OrbisAudio3dPortId* pId) { - LOG_INFO(Lib_Audio3d, "iUserId = {}", iUserId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortClose(OrbisAudio3dPortId uiPortId) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortSetAttribute(OrbisAudio3dPortId uiPortId, - OrbisAudio3dAttributeId uiAttributeId, - const void* pAttribute, size_t szAttribute) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiAttributeId = {}, szAttribute = {}", uiPortId, - uiAttributeId, szAttribute); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortFlush(OrbisAudio3dPortId uiPortId) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortAdvance(OrbisAudio3dPortId uiPortId) { - LOG_TRACE(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortPush(OrbisAudio3dPortId uiPortId, OrbisAudio3dBlocking eBlocking) { - LOG_TRACE(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortGetAttributesSupported(OrbisAudio3dPortId uiPortId, - OrbisAudio3dAttributeId* pCapabilities, - u32* pNumCapabilities) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortGetQueueLevel(OrbisAudio3dPortId uiPortId, u32* pQueueLevel, - u32* pQueueAvailable) { - LOG_TRACE(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dObjectReserve(OrbisAudio3dPortId uiPortId, OrbisAudio3dObjectId* pId) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dObjectUnreserve(OrbisAudio3dPortId uiPortId, - OrbisAudio3dObjectId uiObjectId) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiObjectId = {}", uiPortId, uiObjectId); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dObjectSetAttributes(OrbisAudio3dPortId uiPortId, - OrbisAudio3dObjectId uiObjectId, - size_t szNumAttributes, - const OrbisAudio3dAttribute* pAttributeArray) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiObjectId = {}, szNumAttributes = {}", uiPortId, - uiObjectId, szNumAttributes); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dBedWrite(OrbisAudio3dPortId uiPortId, u32 uiNumChannels, - OrbisAudio3dFormat eFormat, const void* pBuffer, - u32 uiNumSamples) { - LOG_TRACE(Lib_Audio3d, "uiPortId = {}, uiNumChannels = {}, uiNumSamples = {}", uiPortId, - uiNumChannels, uiNumSamples); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dBedWrite2(OrbisAudio3dPortId uiPortId, u32 uiNumChannels, - OrbisAudio3dFormat eFormat, const void* pBuffer, - u32 uiNumSamples, OrbisAudio3dOutputRoute eOutputRoute, - bool bRestricted) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}, uiNumChannels = {}, uiNumSamples = {}, bRestricted = {}", - uiPortId, uiNumChannels, uiNumSamples, bRestricted); - return ORBIS_OK; -} - -size_t PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMemorySize(u32 uiNumSpeakers, bool bIs3d) { - LOG_INFO(Lib_Audio3d, "uiNumSpeakers = {}, bIs3d = {}", uiNumSpeakers, bIs3d); - return ORBIS_OK; -} - -int PS4_SYSV_ABI -sceAudio3dCreateSpeakerArray(OrbisAudio3dSpeakerArrayHandle* pHandle, - const OrbisAudio3dSpeakerArrayParameters* pParameters) { - if (pHandle == nullptr || pParameters == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid SpeakerArray parameters"); - return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; - } - LOG_INFO(Lib_Audio3d, "called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dDeleteSpeakerArray(OrbisAudio3dSpeakerArrayHandle handle) { - if (handle == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); - return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; - } - LOG_INFO(Lib_Audio3d, "called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients(OrbisAudio3dSpeakerArrayHandle handle, - OrbisAudio3dPosition pos, float fSpread, - float* pCoefficients, - u32 uiNumCoefficients) { - LOG_INFO(Lib_Audio3d, "fSpread = {}, uiNumCoefficients = {}", fSpread, uiNumCoefficients); - if (handle == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); - return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; - } - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients2(OrbisAudio3dSpeakerArrayHandle handle, - OrbisAudio3dPosition pos, float fSpread, - float* pCoefficients, - u32 uiNumCoefficients, bool bHeightAware, - float fDownmixSpreadRadius) { +s32 PS4_SYSV_ABI +sceAudio3dAudioOutOpen(const OrbisAudio3dPortId port_id, const OrbisUserServiceUserId user_id, + s32 type, const s32 index, const u32 len, const u32 freq, + const AudioOut::OrbisAudioOutParamExtendedInformation param) { LOG_INFO(Lib_Audio3d, - "fSpread = {}, uiNumCoefficients = {}, bHeightAware = {}, fDownmixSpreadRadius = {}", - fSpread, uiNumCoefficients, bHeightAware, fDownmixSpreadRadius); - if (handle == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid SpeakerArrayHandle"); + "called, port_id = {}, user_id = {}, type = {}, index = {}, len = {}, freq = {}", + port_id, user_id, type, index, len, freq); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + if (len != state->ports[port_id].parameters.granularity) { + LOG_ERROR(Lib_Audio3d, "len != state->ports[port_id].parameters.granularity"); return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; } + + return sceAudioOutOpen(user_id, static_cast(type), index, len, + freq, param); +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutput(const s32 handle, void* ptr) { + LOG_DEBUG(Lib_Audio3d, "called, handle = {}, ptr = {}", handle, ptr); + + if (!ptr) { + LOG_ERROR(Lib_Audio3d, "!ptr"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (handle < 0 || (handle & 0xFFFF) > 25) { + LOG_ERROR(Lib_Audio3d, "handle < 0 || (handle & 0xFFFF) > 25"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + return AudioOut::sceAudioOutOutput(handle, ptr); +} + +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutputs(AudioOut::OrbisAudioOutOutputParam* param, + const u32 num) { + LOG_DEBUG(Lib_Audio3d, "called, param = {}, num = {}", static_cast(param), num); + + if (!param || !num) { + LOG_ERROR(Lib_Audio3d, "!param || !num"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + return AudioOut::sceAudioOutOutputs(param, num); +} + +static s32 PortQueueAudio(Port& port, const OrbisAudio3dPcm& pcm, const u32 num_channels) { + // Audio3d output is configured for stereo signed 16-bit PCM. Convert the data to match. + const SDL_AudioSpec src_spec = { + .format = pcm.format == OrbisAudio3dFormat::ORBIS_AUDIO3D_FORMAT_S16 ? SDL_AUDIO_S16LE + : SDL_AUDIO_F32LE, + .channels = static_cast(num_channels), + .freq = AUDIO3D_SAMPLE_RATE, + }; + constexpr SDL_AudioSpec dst_spec = { + .format = SDL_AUDIO_S16LE, + .channels = AUDIO3D_OUTPUT_NUM_CHANNELS, + .freq = AUDIO3D_SAMPLE_RATE, + }; + const auto src_size = pcm.num_samples * + (pcm.format == OrbisAudio3dFormat::ORBIS_AUDIO3D_FORMAT_S16 ? 2 : 4) * + num_channels; + + u8* dst_data; + int dst_len; + if (!SDL_ConvertAudioSamples(&src_spec, static_cast(pcm.sample_buffer), + static_cast(src_size), &dst_spec, &dst_data, &dst_len)) { + LOG_ERROR(Lib_Audio3d, "SDL_ConvertAudioSamples failed: {}", SDL_GetError()); + return ORBIS_AUDIO3D_ERROR_OUT_OF_MEMORY; + } + + port.queue.emplace_back(AudioData{ + .sample_buffer = dst_data, + .num_samples = pcm.num_samples, + }); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dBedWrite(const OrbisAudio3dPortId port_id, const u32 num_channels, + const OrbisAudio3dFormat format, void* buffer, + const u32 num_samples) { + return sceAudio3dBedWrite2(port_id, num_channels, format, buffer, num_samples, + OrbisAudio3dOutputRoute::ORBIS_AUDIO3D_OUTPUT_BOTH, false); +} + +s32 PS4_SYSV_ABI sceAudio3dBedWrite2(const OrbisAudio3dPortId port_id, const u32 num_channels, + const OrbisAudio3dFormat format, void* buffer, + const u32 num_samples, + const OrbisAudio3dOutputRoute output_route, + const bool restricted) { + LOG_DEBUG( + Lib_Audio3d, + "called, port_id = {}, num_channels = {}, format = {}, num_samples = {}, output_route " + "= {}, restricted = {}", + port_id, num_channels, magic_enum::enum_name(format), num_samples, + magic_enum::enum_name(output_route), restricted); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + if (output_route > OrbisAudio3dOutputRoute::ORBIS_AUDIO3D_OUTPUT_BOTH) { + LOG_ERROR(Lib_Audio3d, "output_route > ORBIS_AUDIO3D_OUTPUT_BOTH"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (format > OrbisAudio3dFormat::ORBIS_AUDIO3D_FORMAT_FLOAT) { + LOG_ERROR(Lib_Audio3d, "format > ORBIS_AUDIO3D_FORMAT_FLOAT"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (num_channels != 2 && num_channels != 8) { + LOG_ERROR(Lib_Audio3d, "num_channels != 2 && num_channels != 8"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (!buffer || !num_samples) { + LOG_ERROR(Lib_Audio3d, "!buffer || !num_samples"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (format == OrbisAudio3dFormat::ORBIS_AUDIO3D_FORMAT_FLOAT) { + if ((reinterpret_cast(buffer) & 3) != 0) { + LOG_ERROR(Lib_Audio3d, "buffer & 3 != 0"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + } else if (format == OrbisAudio3dFormat::ORBIS_AUDIO3D_FORMAT_S16) { + if ((reinterpret_cast(buffer) & 1) != 0) { + LOG_ERROR(Lib_Audio3d, "buffer & 1 != 0"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + } + + return PortQueueAudio(state->ports[port_id], + OrbisAudio3dPcm{ + .format = format, + .sample_buffer = buffer, + .num_samples = num_samples, + }, + num_channels); +} + +s32 PS4_SYSV_ABI sceAudio3dCreateSpeakerArray() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dDeleteSpeakerArray() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* params) { + LOG_DEBUG(Lib_Audio3d, "called"); + if (params) { + *params = OrbisAudio3dOpenParameters{ + .size_this = 0x20, + .granularity = 0x100, + .rate = OrbisAudio3dRate::ORBIS_AUDIO3D_RATE_48000, + .max_objects = 512, + .queue_depth = 2, + .buffer_mode = OrbisAudio3dBufferMode::ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH, + }; + } return ORBIS_OK; } -s32 PS4_SYSV_ABI sceAudio3dAudioOutOpen(OrbisAudio3dPortId uiPortId, OrbisUserServiceUserId userId, - s32 type, s32 index, u32 len, u32 freq, u32 param) { +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMemorySize() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients2() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dInitialize(const s64 reserved) { + LOG_INFO(Lib_Audio3d, "called, reserved = {}", reserved); + + if (reserved != 0) { + LOG_ERROR(Lib_Audio3d, "reserved != 0"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + if (state) { + LOG_ERROR(Lib_Audio3d, "already initialized"); + return ORBIS_AUDIO3D_ERROR_NOT_READY; + } + + state = std::make_unique(); + + if (const auto init_ret = AudioOut::sceAudioOutInit(); + init_ret < 0 && init_ret != ORBIS_AUDIO_OUT_ERROR_ALREADY_INIT) { + return init_ret; + } + + AudioOut::OrbisAudioOutParamExtendedInformation ext_info{}; + ext_info.data_format.Assign(AUDIO3D_OUTPUT_FORMAT); + state->audio_out_handle = + AudioOut::sceAudioOutOpen(0xFF, AudioOut::OrbisAudioOutPort::Audio3d, 0, + AUDIO3D_OUTPUT_BUFFER_FRAMES, AUDIO3D_SAMPLE_RATE, ext_info); + if (state->audio_out_handle < 0) { + return state->audio_out_handle; + } + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dObjectReserve(const OrbisAudio3dPortId port_id, + OrbisAudio3dObjectId* object_id) { + LOG_INFO(Lib_Audio3d, "called, port_id = {}, object_id = {}", port_id, + static_cast(object_id)); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + if (!object_id) { + LOG_ERROR(Lib_Audio3d, "!object_id"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + static int last_id = 0; + *object_id = ++last_id; + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dObjectSetAttributes(const OrbisAudio3dPortId port_id, + OrbisAudio3dObjectId object_id, + const u64 num_attributes, + const OrbisAudio3dAttribute* attribute_array) { + LOG_DEBUG(Lib_Audio3d, + "called, port_id = {}, object_id = {}, num_attributes = {}, attribute_array = {}", + port_id, object_id, num_attributes, fmt::ptr(attribute_array)); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + auto& port = state->ports[port_id]; + + for (u64 i = 0; i < num_attributes; i++) { + const auto& attribute = attribute_array[i]; + + switch (attribute.attribute_id) { + case OrbisAudio3dAttributeId::ORBIS_AUDIO3D_ATTRIBUTE_PCM: { + const auto pcm = static_cast(attribute.value); + // Object audio has 1 channel. + if (const auto ret = PortQueueAudio(port, *pcm, 1); ret != ORBIS_OK) { + return ret; + } + break; + } + default: + LOG_ERROR(Lib_Audio3d, "Unsupported attribute ID: {:#x}", + static_cast(attribute.attribute_id)); + break; + } + } + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dObjectUnreserve() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortAdvance(const OrbisAudio3dPortId port_id) { + LOG_DEBUG(Lib_Audio3d, "called, port_id = {}", port_id); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + if (state->ports[port_id].parameters.buffer_mode == + OrbisAudio3dBufferMode::ORBIS_AUDIO3D_BUFFER_NO_ADVANCE) { + LOG_ERROR(Lib_Audio3d, "port doesn't have advance capability"); + return ORBIS_AUDIO3D_ERROR_NOT_SUPPORTED; + } + + auto& port = state->ports[port_id]; + if (port.current_buffer.has_value()) { + // Free existing buffer before replacing. + SDL_free(port.current_buffer->sample_buffer); + } + + if (!port.queue.empty()) { + port.current_buffer = port.queue.front(); + port.queue.pop_front(); + } else { + // Nothing to advance to. + LOG_DEBUG(Lib_Audio3d, "Port advance with no buffer queued"); + port.current_buffer = std::nullopt; + } + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortClose() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortCreate() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortDestroy() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortFlush() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortFreeState() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetAttributesSupported() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetList() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetParameters() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetQueueLevel(const OrbisAudio3dPortId port_id, u32* queue_level, + u32* queue_available) { + LOG_DEBUG(Lib_Audio3d, "called, port_id = {}, queue_level = {}, queue_available = {}", port_id, + static_cast(queue_level), static_cast(queue_available)); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + if (!queue_level && !queue_available) { + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + const auto port = state->ports[port_id]; + const size_t size = port.queue.size(); + + if (queue_level) { + *queue_level = size; + } + + if (queue_available) { + *queue_available = port.parameters.queue_depth - size; + } + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetState() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortGetStatus() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortOpen(const OrbisUserServiceUserId user_id, + const OrbisAudio3dOpenParameters* parameters, + OrbisAudio3dPortId* port_id) { + LOG_INFO(Lib_Audio3d, "called, user_id = {}, parameters = {}, id = {}", user_id, + static_cast(parameters), static_cast(port_id)); + + if (!state) { + LOG_ERROR(Lib_Audio3d, "!initialized"); + return ORBIS_AUDIO3D_ERROR_NOT_READY; + } + + if (!parameters || !port_id) { + LOG_ERROR(Lib_Audio3d, "!parameters || !id"); + return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; + } + + const int id = static_cast(state->ports.size()) + 1; + + if (id > 3) { + LOG_ERROR(Lib_Audio3d, "id > 3"); + return ORBIS_AUDIO3D_ERROR_OUT_OF_RESOURCES; + } + + *port_id = id; + std::memcpy(&state->ports[id].parameters, parameters, sizeof(OrbisAudio3dOpenParameters)); + + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortPush(const OrbisAudio3dPortId port_id, + const OrbisAudio3dBlocking blocking) { + LOG_DEBUG(Lib_Audio3d, "called, port_id = {}, blocking = {}", port_id, + magic_enum::enum_name(blocking)); + + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } + + const auto& port = state->ports[port_id]; + if (port.parameters.buffer_mode != + OrbisAudio3dBufferMode::ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH) { + LOG_ERROR(Lib_Audio3d, "port doesn't have push capability"); + return ORBIS_AUDIO3D_ERROR_NOT_SUPPORTED; + } + + if (!port.current_buffer.has_value()) { + // Nothing to push. + LOG_DEBUG(Lib_Audio3d, "Port push with no buffer ready"); + return ORBIS_OK; + } + + // TODO: Implement asynchronous blocking mode. + const auto& [sample_buffer, num_samples] = port.current_buffer.value(); + return AudioOut::sceAudioOutOutput(state->audio_out_handle, sample_buffer); +} + +s32 PS4_SYSV_ABI sceAudio3dPortQueryDebug() { + LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI sceAudio3dPortSetAttribute(const OrbisAudio3dPortId port_id, + const OrbisAudio3dAttributeId attribute_id, + void* attribute, const u64 attribute_size) { LOG_INFO(Lib_Audio3d, - "uiPortId = {}, userId = {}, type = {}, index = {}, len = {}, freq = {}, param = {}", - uiPortId, userId, type, index, len, freq, param); - return ORBIS_OK; -} + "called, port_id = {}, attribute_id = {}, attribute = {}, attribute_size = {}", + port_id, static_cast(attribute_id), attribute, attribute_size); -s32 PS4_SYSV_ABI sceAudio3dAudioOutClose(s32 handle) { - LOG_INFO(Lib_Audio3d, "handle = {}", handle); - return ORBIS_OK; -} + if (!state->ports.contains(port_id)) { + LOG_ERROR(Lib_Audio3d, "!state->ports.contains(port_id)"); + return ORBIS_AUDIO3D_ERROR_INVALID_PORT; + } -s32 PS4_SYSV_ABI sceAudio3dAudioOutOutput(s32 handle, const void* ptr) { - LOG_TRACE(Lib_Audio3d, "handle = {}", handle); - if (ptr == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid Output ptr"); + if (!attribute) { + LOG_ERROR(Lib_Audio3d, "!attribute"); return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; } + + // TODO + return ORBIS_OK; } -s32 PS4_SYSV_ABI sceAudio3dAudioOutOutputs(::Libraries::AudioOut::OrbisAudioOutOutputParam* param, - s32 num) { - LOG_INFO(Lib_Audio3d, "num = {}", num); - if (param == nullptr) { - LOG_ERROR(Lib_Audio3d, "invalid OutputParam ptr"); - return ORBIS_AUDIO3D_ERROR_INVALID_PARAMETER; - } - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortCreate(u32 uiGranularity, OrbisAudio3dRate eRate, s64 iReserved, - OrbisAudio3dPortId* pId) { - LOG_INFO(Lib_Audio3d, "uiGranularity = {}, iReserved = {}", uiGranularity, iReserved); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortDestroy(OrbisAudio3dPortId uiPortId) { - LOG_INFO(Lib_Audio3d, "uiPortId = {}", uiPortId); - return ORBIS_OK; -} - -// Audio3dPrivate - -const char* PS4_SYSV_ABI sceAudio3dStrError(int iErrorCode) { - LOG_ERROR(Lib_Audio3d, "(PRIVATE) called, iErrorCode = {}", iErrorCode); - return "NOT_IMPLEMENTED"; -} - -// Audio3dDebug - -int PS4_SYSV_ABI sceAudio3dPortQueryDebug() { - LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortQueryDebug called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortGetList() { - LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetList called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortGetParameters() { - LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetParameters called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortGetState() { - LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortGetState called"); - return ORBIS_OK; -} - -int PS4_SYSV_ABI sceAudio3dPortFreeState() { - LOG_WARNING(Lib_Audio3d, "(DEBUG) sceAudio3dPortFreeState called"); - return ORBIS_OK; -} - -// Unknown - -int PS4_SYSV_ABI sceAudio3dPortGetBufferLevel() { +s32 PS4_SYSV_ABI sceAudio3dReportRegisterHandler() { LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceAudio3dPortGetStatus() { +s32 PS4_SYSV_ABI sceAudio3dReportUnregisterHandler() { LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceAudio3dReportRegisterHandler() { +s32 PS4_SYSV_ABI sceAudio3dSetGpuRenderer() { LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceAudio3dReportUnregisterHandler() { +s32 PS4_SYSV_ABI sceAudio3dStrError() { LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); return ORBIS_OK; } -int PS4_SYSV_ABI sceAudio3dSetGpuRenderer() { +s32 PS4_SYSV_ABI sceAudio3dTerminate() { LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); return ORBIS_OK; } void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("pZlOm1aF3aA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutClose); + LIB_FUNCTION("ucEsi62soTo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutOpen); + LIB_FUNCTION("7NYEzJ9SJbM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dAudioOutOutput); + LIB_FUNCTION("HbxYY27lK6E", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dAudioOutOutputs); + LIB_FUNCTION("9tEwE0GV0qo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite); + LIB_FUNCTION("xH4Q9UILL3o", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite2); + LIB_FUNCTION("lvWMW6vEqFU", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dCreateSpeakerArray); + LIB_FUNCTION("8hm6YdoQgwg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dDeleteSpeakerArray); + LIB_FUNCTION("Im+jOoa5WAI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetDefaultOpenParameters); + LIB_FUNCTION("kEqqyDkmgdI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dGetSpeakerArrayMemorySize); LIB_FUNCTION("-R1DukFq7Dk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dGetSpeakerArrayMixCoefficients); LIB_FUNCTION("-Re+pCWvwjQ", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dGetSpeakerArrayMixCoefficients2); - LIB_FUNCTION("-pzYDZozm+M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dPortQueryDebug); - LIB_FUNCTION("1HXxo-+1qCw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dObjectUnreserve); + LIB_FUNCTION("UmCvjSmuZIw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dInitialize); + LIB_FUNCTION("jO2tec4dJ2M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dObjectReserve); LIB_FUNCTION("4uyHN9q4ZeU", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dObjectSetAttributes); - LIB_FUNCTION("7NYEzJ9SJbM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dAudioOutOutput); - LIB_FUNCTION("8hm6YdoQgwg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dDeleteSpeakerArray); + LIB_FUNCTION("1HXxo-+1qCw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dObjectUnreserve); + LIB_FUNCTION("lw0qrdSjZt8", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortAdvance); + LIB_FUNCTION("OyVqOeVNtSk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortClose); + LIB_FUNCTION("UHFOgVNz0kk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortCreate); + LIB_FUNCTION("Mw9mRQtWepY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortDestroy); + LIB_FUNCTION("ZOGrxWLgQzE", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFlush); + LIB_FUNCTION("uJ0VhGcxCTQ", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFreeState); LIB_FUNCTION("9ZA23Ia46Po", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetAttributesSupported); - LIB_FUNCTION("9tEwE0GV0qo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite); - LIB_FUNCTION("Aacl5qkRU6U", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dStrError); - LIB_FUNCTION("CKHlRW2E9dA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetState); - LIB_FUNCTION("HbxYY27lK6E", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dAudioOutOutputs); - LIB_FUNCTION("Im+jOoa5WAI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dGetDefaultOpenParameters); - LIB_FUNCTION("Mw9mRQtWepY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortDestroy); - LIB_FUNCTION("OyVqOeVNtSk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortClose); - LIB_FUNCTION("QfNXBrKZeI0", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dReportRegisterHandler); - LIB_FUNCTION("QqgTQQdzEMY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dPortGetBufferLevel); LIB_FUNCTION("SEggctIeTcI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetList); - LIB_FUNCTION("UHFOgVNz0kk", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortCreate); - LIB_FUNCTION("UmCvjSmuZIw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dInitialize); - LIB_FUNCTION("VEVhZ9qd4ZY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortPush); - LIB_FUNCTION("WW1TS2iz5yc", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dTerminate); - LIB_FUNCTION("XeDDK0xJWQA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortOpen); - LIB_FUNCTION("YaaDbDwKpFM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dPortGetQueueLevel); - LIB_FUNCTION("Yq9bfUQ0uJg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dPortSetAttribute); - LIB_FUNCTION("ZOGrxWLgQzE", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFlush); LIB_FUNCTION("flPcUaXVXcw", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetParameters); + LIB_FUNCTION("YaaDbDwKpFM", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortGetQueueLevel); + LIB_FUNCTION("CKHlRW2E9dA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetState); LIB_FUNCTION("iRX6GJs9tvE", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortGetStatus); - LIB_FUNCTION("jO2tec4dJ2M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dObjectReserve); - LIB_FUNCTION("kEqqyDkmgdI", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dGetSpeakerArrayMemorySize); - LIB_FUNCTION("lvWMW6vEqFU", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, - sceAudio3dCreateSpeakerArray); - LIB_FUNCTION("lw0qrdSjZt8", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortAdvance); - LIB_FUNCTION("pZlOm1aF3aA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutClose); + LIB_FUNCTION("XeDDK0xJWQA", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortOpen); + LIB_FUNCTION("VEVhZ9qd4ZY", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortPush); + LIB_FUNCTION("-pzYDZozm+M", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortQueryDebug); + LIB_FUNCTION("Yq9bfUQ0uJg", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dPortSetAttribute); + LIB_FUNCTION("QfNXBrKZeI0", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, + sceAudio3dReportRegisterHandler); LIB_FUNCTION("psv2gbihC1A", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dReportUnregisterHandler); - LIB_FUNCTION("uJ0VhGcxCTQ", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dPortFreeState); - LIB_FUNCTION("ucEsi62soTo", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dAudioOutOpen); - LIB_FUNCTION("xH4Q9UILL3o", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dBedWrite2); LIB_FUNCTION("yEYXcbAGK14", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dSetGpuRenderer); + LIB_FUNCTION("Aacl5qkRU6U", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dStrError); + LIB_FUNCTION("WW1TS2iz5yc", "libSceAudio3d", 1, "libSceAudio3d", 1, 1, sceAudio3dTerminate); }; } // namespace Libraries::Audio3d diff --git a/src/core/libraries/audio3d/audio3d.h b/src/core/libraries/audio3d/audio3d.h index 6f344226f..f4e9ada8a 100644 --- a/src/core/libraries/audio3d/audio3d.h +++ b/src/core/libraries/audio3d/audio3d.h @@ -1,11 +1,13 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#include "common/types.h" +#include +#include -#include +#include "common/types.h" +#include "core/libraries/audio/audioout.h" namespace Core::Loader { class SymbolsResolver; @@ -13,123 +15,131 @@ class SymbolsResolver; namespace Libraries::Audio3d { -class Audio3d; - using OrbisUserServiceUserId = s32; -using OrbisAudio3dPortId = u32; -using OrbisAudio3dObjectId = u32; -using OrbisAudio3dAttributeId = u32; -enum class OrbisAudio3dFormat { - S16 = 0, - Float = 1, +enum class OrbisAudio3dRate : u32 { + ORBIS_AUDIO3D_RATE_48000 = 0, }; -enum class OrbisAudio3dRate { - Rate48000 = 0, +enum class OrbisAudio3dBufferMode : u32 { + ORBIS_AUDIO3D_BUFFER_NO_ADVANCE = 0, + ORBIS_AUDIO3D_BUFFER_ADVANCE_NO_PUSH = 1, + ORBIS_AUDIO3D_BUFFER_ADVANCE_AND_PUSH = 2, }; -enum class OrbisAudio3dBufferMode { NoAdvance = 0, AdvanceNoPush = 1, AdvanceAndPush = 2 }; - -enum class OrbisAudio3dBlocking { - Async = 0, - Sync = 1, -}; - -enum class OrbisAudio3dPassthrough { - None = 0, - Left = 1, - Right = 2, -}; - -enum class OrbisAudio3dOutputRoute { - Both = 0, - HmuOnly = 1, - TvOnly = 2, -}; - -enum class OrbisAudio3dAmbisonics : u32 { - None = ~0U, - W = 0, - X = 1, - Y = 2, - Z = 3, - R = 4, - S = 5, - T = 6, - U = 7, - V = 8, - K = 9, - L = 10, - M = 11, - N = 12, - O = 13, - P = 14, - Q = 15 -}; - -static const OrbisAudio3dAttributeId s_sceAudio3dAttributePcm = 0x00000001; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributePriority = 0x00000002; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributePosition = 0x00000003; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeSpread = 0x00000004; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeGain = 0x00000005; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributePassthrough = 0x00000006; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeResetState = 0x00000007; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeApplicationSpecific = 0x00000008; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeAmbisonics = 0x00000009; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeRestricted = 0x0000000A; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeOutputRoute = 0x0000000B; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeLateReverbLevel = 0x00010001; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadRadius = 0x00010002; -static const OrbisAudio3dAttributeId s_sceAudio3dAttributeDownmixSpreadHeightAware = 0x00010003; - -struct OrbisAudio3dSpeakerArray; -using OrbisAudio3dSpeakerArrayHandle = OrbisAudio3dSpeakerArray*; // head - struct OrbisAudio3dOpenParameters { - size_t size_this; + u64 size_this; u32 granularity; OrbisAudio3dRate rate; u32 max_objects; u32 queue_depth; OrbisAudio3dBufferMode buffer_mode; - char padding[32]; + int : 32; u32 num_beds; }; -struct OrbisAudio3dAttribute { - OrbisAudio3dAttributeId attribute_id; - char padding[32]; - const void* p_value; - size_t value; +enum class OrbisAudio3dFormat : u32 { + ORBIS_AUDIO3D_FORMAT_S16 = 0, + ORBIS_AUDIO3D_FORMAT_FLOAT = 1, }; -struct OrbisAudio3dPosition { - float fX; - float fY; - float fZ; +enum class OrbisAudio3dOutputRoute : u32 { + ORBIS_AUDIO3D_OUTPUT_BOTH = 0, + ORBIS_AUDIO3D_OUTPUT_HMU_ONLY = 1, + ORBIS_AUDIO3D_OUTPUT_TV_ONLY = 2, +}; + +enum class OrbisAudio3dBlocking : u32 { + ORBIS_AUDIO3D_BLOCKING_ASYNC = 0, + ORBIS_AUDIO3D_BLOCKING_SYNC = 1, }; struct OrbisAudio3dPcm { OrbisAudio3dFormat format; - const void* sample_buffer; + void* sample_buffer; u32 num_samples; }; -struct OrbisAudio3dSpeakerArrayParameters { - OrbisAudio3dPosition* speaker_position; - u32 num_speakers; - bool is_3d; - void* buffer; - size_t size; +enum class OrbisAudio3dAttributeId : u32 { + ORBIS_AUDIO3D_ATTRIBUTE_PCM = 1, }; -struct OrbisAudio3dApplicationSpecific { - size_t size_this; - u8 application_specific[32]; +using OrbisAudio3dPortId = u32; +using OrbisAudio3dObjectId = u32; + +struct OrbisAudio3dAttribute { + OrbisAudio3dAttributeId attribute_id; + int : 32; + void* value; + u64 value_size; }; -void PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* sParameters); +struct AudioData { + u8* sample_buffer; + u32 num_samples; +}; + +struct Port { + OrbisAudio3dOpenParameters parameters{}; + std::deque queue; // Only stores PCM buffers for now + std::optional current_buffer{}; +}; + +struct Audio3dState { + std::unordered_map ports; + s32 audio_out_handle; +}; + +s32 PS4_SYSV_ABI sceAudio3dAudioOutClose(s32 handle); +s32 PS4_SYSV_ABI sceAudio3dAudioOutOpen(OrbisAudio3dPortId port_id, OrbisUserServiceUserId user_id, + s32 type, s32 index, u32 len, u32 freq, + AudioOut::OrbisAudioOutParamExtendedInformation param); +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutput(s32 handle, void* ptr); +s32 PS4_SYSV_ABI sceAudio3dAudioOutOutputs(AudioOut::OrbisAudioOutOutputParam* param, u32 num); +s32 PS4_SYSV_ABI sceAudio3dBedWrite(OrbisAudio3dPortId port_id, u32 num_channels, + OrbisAudio3dFormat format, void* buffer, u32 num_samples); +s32 PS4_SYSV_ABI sceAudio3dBedWrite2(OrbisAudio3dPortId port_id, u32 num_channels, + OrbisAudio3dFormat format, void* buffer, u32 num_samples, + OrbisAudio3dOutputRoute output_route, bool restricted); +s32 PS4_SYSV_ABI sceAudio3dCreateSpeakerArray(); +s32 PS4_SYSV_ABI sceAudio3dDeleteSpeakerArray(); +s32 PS4_SYSV_ABI sceAudio3dGetDefaultOpenParameters(OrbisAudio3dOpenParameters* params); +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMemorySize(); +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients(); +s32 PS4_SYSV_ABI sceAudio3dGetSpeakerArrayMixCoefficients2(); +s32 PS4_SYSV_ABI sceAudio3dInitialize(s64 reserved); +s32 PS4_SYSV_ABI sceAudio3dObjectReserve(OrbisAudio3dPortId port_id, + OrbisAudio3dObjectId* object_id); +s32 PS4_SYSV_ABI sceAudio3dObjectSetAttributes(OrbisAudio3dPortId port_id, + OrbisAudio3dObjectId object_id, u64 num_attributes, + const OrbisAudio3dAttribute* attribute_array); +s32 PS4_SYSV_ABI sceAudio3dObjectUnreserve(); +s32 PS4_SYSV_ABI sceAudio3dPortAdvance(OrbisAudio3dPortId port_id); +s32 PS4_SYSV_ABI sceAudio3dPortClose(); +s32 PS4_SYSV_ABI sceAudio3dPortCreate(); +s32 PS4_SYSV_ABI sceAudio3dPortDestroy(); +s32 PS4_SYSV_ABI sceAudio3dPortFlush(); +s32 PS4_SYSV_ABI sceAudio3dPortFreeState(); +s32 PS4_SYSV_ABI sceAudio3dPortGetAttributesSupported(); +s32 PS4_SYSV_ABI sceAudio3dPortGetList(); +s32 PS4_SYSV_ABI sceAudio3dPortGetParameters(); +s32 PS4_SYSV_ABI sceAudio3dPortGetQueueLevel(OrbisAudio3dPortId port_id, u32* queue_level, + u32* queue_available); +s32 PS4_SYSV_ABI sceAudio3dPortGetState(); +s32 PS4_SYSV_ABI sceAudio3dPortGetStatus(); +s32 PS4_SYSV_ABI sceAudio3dPortOpen(OrbisUserServiceUserId user_id, + const OrbisAudio3dOpenParameters* parameters, + OrbisAudio3dPortId* port_id); +s32 PS4_SYSV_ABI sceAudio3dPortPush(OrbisAudio3dPortId port_id, OrbisAudio3dBlocking blocking); +s32 PS4_SYSV_ABI sceAudio3dPortQueryDebug(); +s32 PS4_SYSV_ABI sceAudio3dPortSetAttribute(OrbisAudio3dPortId port_id, + OrbisAudio3dAttributeId attribute_id, void* attribute, + u64 attribute_size); +s32 PS4_SYSV_ABI sceAudio3dReportRegisterHandler(); +s32 PS4_SYSV_ABI sceAudio3dReportUnregisterHandler(); +s32 PS4_SYSV_ABI sceAudio3dSetGpuRenderer(); +s32 PS4_SYSV_ABI sceAudio3dStrError(); +s32 PS4_SYSV_ABI sceAudio3dTerminate(); void RegisterlibSceAudio3d(Core::Loader::SymbolsResolver* sym); } // namespace Libraries::Audio3d diff --git a/src/core/libraries/audio3d/audio3d_error.h b/src/core/libraries/audio3d/audio3d_error.h index 626ac8699..ff9d9749c 100644 --- a/src/core/libraries/audio3d/audio3d_error.h +++ b/src/core/libraries/audio3d/audio3d_error.h @@ -3,8 +3,6 @@ #pragma once -#include "core/libraries/error_codes.h" - constexpr int ORBIS_AUDIO3D_ERROR_UNKNOWN = 0x80EA0001; constexpr int ORBIS_AUDIO3D_ERROR_INVALID_PORT = 0x80EA0002; constexpr int ORBIS_AUDIO3D_ERROR_INVALID_OBJECT = 0x80EA0003; diff --git a/src/core/libraries/audio3d/audio3d_impl.cpp b/src/core/libraries/audio3d/audio3d_impl.cpp deleted file mode 100644 index 3069e8800..000000000 --- a/src/core/libraries/audio3d/audio3d_impl.cpp +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "audio3d_error.h" -#include "audio3d_impl.h" - -#include "common/logging/log.h" -#include "core/libraries/error_codes.h" -#include "core/libraries/kernel/kernel.h" - -using namespace Libraries::Kernel; - -namespace Libraries::Audio3d {} // namespace Libraries::Audio3d diff --git a/src/core/libraries/audio3d/audio3d_impl.h b/src/core/libraries/audio3d/audio3d_impl.h deleted file mode 100644 index 1213a030e..000000000 --- a/src/core/libraries/audio3d/audio3d_impl.h +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "audio3d.h" - -namespace Libraries::Audio3d { - -class Audio3d { -public: -private: - using OrbisAudio3dPluginId = u32; -}; - -} // namespace Libraries::Audio3d From bec1b9056f7ca5c94efef424985eb54a63cad518 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sun, 13 Apr 2025 23:46:30 -0700 Subject: [PATCH 23/27] shader_recompiler: Misc shader fixes. (#2781) * shader_recompiler: Fix frexp exponent type. * shader_recompiler: Implement V_CMP_CLASS_F32 negative class mask. * shader_recompiler: Define operands for DS_ORDERED_COUNT. --- .../backend/spirv/emit_spirv_floating_point.cpp | 4 ++-- src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | 4 ++-- src/shader_recompiler/frontend/format.cpp | 3 +-- src/shader_recompiler/frontend/translate/vector_alu.cpp | 4 +++- src/shader_recompiler/ir/reg.h | 1 + 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp index 8de903ce6..347c4cb0a 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp @@ -267,12 +267,12 @@ Id EmitFPFrexpSig64(EmitContext& ctx, Id value) { Id EmitFPFrexpExp32(EmitContext& ctx, Id value) { const auto frexp = ctx.OpFrexpStruct(ctx.frexp_result_f32, value); - return ctx.OpCompositeExtract(ctx.U32[1], frexp, 1); + return ctx.OpBitcast(ctx.U32[1], ctx.OpCompositeExtract(ctx.S32[1], frexp, 1)); } Id EmitFPFrexpExp64(EmitContext& ctx, Id value) { const auto frexp = ctx.OpFrexpStruct(ctx.frexp_result_f64, value); - return ctx.OpCompositeExtract(ctx.U32[1], frexp, 1); + return ctx.OpBitcast(ctx.U32[1], ctx.OpCompositeExtract(ctx.S32[1], frexp, 1)); } Id EmitFPOrdEqual16(EmitContext& ctx, Id lhs, Id rhs) { diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index e20cfeae2..8433251ff 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp @@ -153,9 +153,9 @@ void EmitContext::DefineArithmeticTypes() { full_result_i32x2 = Name(TypeStruct(S32[1], S32[1]), "full_result_i32x2"); full_result_u32x2 = Name(TypeStruct(U32[1], U32[1]), "full_result_u32x2"); - frexp_result_f32 = Name(TypeStruct(F32[1], U32[1]), "frexp_result_f32"); + frexp_result_f32 = Name(TypeStruct(F32[1], S32[1]), "frexp_result_f32"); if (info.uses_fp64) { - frexp_result_f64 = Name(TypeStruct(F64[1], U32[1]), "frexp_result_f64"); + frexp_result_f64 = Name(TypeStruct(F64[1], S32[1]), "frexp_result_f64"); } } diff --git a/src/shader_recompiler/frontend/format.cpp b/src/shader_recompiler/frontend/format.cpp index 76b1cc818..f89f0a582 100644 --- a/src/shader_recompiler/frontend/format.cpp +++ b/src/shader_recompiler/frontend/format.cpp @@ -2784,8 +2784,7 @@ constexpr std::array InstructionFormatDS = {{ // 62 = DS_APPEND {InstClass::DsAppendCon, InstCategory::DataShare, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 63 = DS_ORDERED_COUNT - {InstClass::GdsOrdCnt, InstCategory::DataShare, 3, 1, ScalarType::Undefined, - ScalarType::Undefined}, + {InstClass::GdsOrdCnt, InstCategory::DataShare, 3, 1, ScalarType::Uint32, ScalarType::Uint32}, // 64 = DS_ADD_U64 {InstClass::DsAtomicArith64, InstCategory::DataShare, 3, 1, ScalarType::Uint64, ScalarType::Uint64}, diff --git a/src/shader_recompiler/frontend/translate/vector_alu.cpp b/src/shader_recompiler/frontend/translate/vector_alu.cpp index 22020d59f..da25f5434 100644 --- a/src/shader_recompiler/frontend/translate/vector_alu.cpp +++ b/src/shader_recompiler/frontend/translate/vector_alu.cpp @@ -1010,8 +1010,10 @@ void Translator::V_CMP_CLASS_F32(const GcnInst& inst) { value = ir.FPIsNan(src0); } else if ((class_mask & IR::FloatClassFunc::Infinity) == IR::FloatClassFunc::Infinity) { value = ir.FPIsInf(src0); + } else if ((class_mask & IR::FloatClassFunc::Negative) == IR::FloatClassFunc::Negative) { + value = ir.FPLessThanEqual(src0, ir.Imm32(-0.f)); } else { - UNREACHABLE(); + UNREACHABLE_MSG("Unsupported float class mask: {:#x}", static_cast(class_mask)); } } else { // We don't know the type yet, delay its resolution. diff --git a/src/shader_recompiler/ir/reg.h b/src/shader_recompiler/ir/reg.h index 40c4b61c3..622190cf0 100644 --- a/src/shader_recompiler/ir/reg.h +++ b/src/shader_recompiler/ir/reg.h @@ -25,6 +25,7 @@ enum class FloatClassFunc : u32 { NaN = SignalingNan | QuietNan, Infinity = PositiveInfinity | NegativeInfinity, + Negative = NegativeInfinity | NegativeNormal | NegativeDenorm | NegativeZero, Finite = NegativeNormal | NegativeDenorm | NegativeZero | PositiveNormal | PositiveDenorm | PositiveZero, }; From b8884d9591a878e9b6b1b92bdafe22c34cbf0c63 Mon Sep 17 00:00:00 2001 From: Missake212 Date: Mon, 14 Apr 2025 10:26:39 +0100 Subject: [PATCH 24/27] Adding requirements to the App Bug Report template based on the Game Bug Report template (#2783) * Update app-bug-report.yaml Forcing people to fill information about their hardware to make it easier for debugging problems, example: "shad crashes after I open it" with this we can tell if the user has a CPU with an iGPU instead of asking them. * Update app-bug-report.yaml VRAM amount shouldn't be needed actually. --- .github/ISSUE_TEMPLATE/app-bug-report.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/app-bug-report.yaml b/.github/ISSUE_TEMPLATE/app-bug-report.yaml index cd540e06e..8959221a0 100644 --- a/.github/ISSUE_TEMPLATE/app-bug-report.yaml +++ b/.github/ISSUE_TEMPLATE/app-bug-report.yaml @@ -53,3 +53,24 @@ body: placeholder: "Example: Windows 11, Arch Linux, MacOS 15" validations: required: true + - type: input + id: cpu + attributes: + label: CPU + placeholder: "Example: Intel Core i7-8700" + validations: + required: true + - type: input + id: gpu + attributes: + label: GPU + placeholder: "Example: nVidia GTX 1650" + validations: + required: true + - type: input + id: ram + attributes: + label: Amount of RAM in GB + placeholder: "Example: 16 GB" + validations: + required: true From 7d32efbd3130c5d5aa12729f7c8385bd028985ad Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Mon, 14 Apr 2025 12:26:54 +0300 Subject: [PATCH 25/27] New Crowdin updates (#2748) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Chinese Traditional) * New translations en_us.ts (Dutch) * New translations en_us.ts (Slovenian) * New translations en_us.ts (Arabic) * New translations en_us.ts (Arabic) --- src/qt_gui/translations/ar_SA.ts | 38 +- src/qt_gui/translations/nl_NL.ts | 4 +- src/qt_gui/translations/sl_SI.ts | 2081 ++++++++++++++++++++++++++++++ src/qt_gui/translations/zh_TW.ts | 840 ++++++------ 4 files changed, 2522 insertions(+), 441 deletions(-) create mode 100644 src/qt_gui/translations/sl_SI.ts diff --git a/src/qt_gui/translations/ar_SA.ts b/src/qt_gui/translations/ar_SA.ts index 63ae733e8..f71ec7d3a 100644 --- a/src/qt_gui/translations/ar_SA.ts +++ b/src/qt_gui/translations/ar_SA.ts @@ -1892,43 +1892,43 @@ Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. - Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. + نسخ مخازن الذاكرة الخاصة بالـ GPU:\nيتجاوز مشكلة التزامن المتعلقة بتقديمات GPU.\n قد يساعد أو لا يساعد في حل أعطال PM4 من النوع 0. Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. - Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + علامات تصحيح الأخطاء للمضيف:\nقوم بإدراج معلومات في المحاكي مثل علامات للأوامر AMDGPU المرتبطة بأوامر فولكن، إضافةً إلى تخصيص أسماء لتصحيح الأخطاء للموارد.\nمن الأفضل تفعيل تشخيص الأعطال عند تفعيل هذه الخاصية.\nمفيد لبرامج مثل أداة تصحيح الأخطاء الرسومية. Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. - Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + علامات تصحيح الضيف:\nيُدخل أي علامات تصحيح أضافتها اللعبة بنفسها إلى ذاكرة أوامر الرسوميات.\nإذا تم التفعيل الأفضل تمكين "تشخيص الأعطال".\nمفيد لبرامج مثل دوك. Save Data Path:\nThe folder where game save data will be saved. - Save Data Path:\nThe folder where game save data will be saved. + مسار حفظ البيانات:\nالمجلد الذي سيتم فيه حفظ بيانات تخزين اللعبة. Browse:\nBrowse for a folder to set as the save data path. - Browse:\nBrowse for a folder to set as the save data path. + تصفح:\nاختر مجلدًا لتحديده كمكان لحفظ بيانات التخزين. Release - Release + إصدار Nightly - Nightly + إصدار ليلي Set the volume of the background music. - Set the volume of the background music. + ضبط صوت الموسيقى في الخلفية. Enable Motion Controls - Enable Motion Controls + تفعيل التحكم بالحركة Save Data Path - Save Data Path + مسار بيانات الحفظ Browse @@ -1936,15 +1936,15 @@ async - async + غير متزامن sync - sync + متزامن Auto Select - Auto Select + تلقائي Directory to install games @@ -1952,11 +1952,11 @@ Directory to save data - Directory to save data + مسار الحفظ لبيانات الألعاب Video - Video + الفيديو Display Mode @@ -1992,7 +1992,7 @@ Separate Log Files:\nWrites a separate logfile for each game. - Separate Log Files:\nWrites a separate logfile for each game. + ملفات السجل المنفصلة:\nيتم كتابة سجل منفصل لكل لعبه. Trophy Notification Position @@ -2028,7 +2028,7 @@ Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. - Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. + مجلد المستخدم القابل للنقل:\nتخزين إعدادات وبيانات المحاكي التي ستُطبق فقط على هذا الإصدار في المجلد الحالي. بعد إنشاء مجلد المستخدم القابل للنقل، يجب إعادة تشغيل التطبيق للبدء في استخدامه. Cannot create portable user folder @@ -2040,7 +2040,7 @@ Portable user folder created - Portable user folder created + تم إنشاء مجلد مستخدم محمول %1 successfully created. @@ -2048,7 +2048,7 @@ Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. - Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. + افتح مجلد الصور/الأصوات الخاصة بالجوائز المخصصة:\nيمكنك إضافة صور مخصصة للجوائز وصوت مرفق.\nأضف الملفات إلى مجلد custom_trophy بالأسماء التالية:\ntrophy.wav أو trophy.mp3، bronze.png، gold.png، platinum.png، silver.png\nملاحظة: الصوت سيعمل فقط في الإصدارات التي تستخدم QT. diff --git a/src/qt_gui/translations/nl_NL.ts b/src/qt_gui/translations/nl_NL.ts index 66872455e..2d75b74eb 100644 --- a/src/qt_gui/translations/nl_NL.ts +++ b/src/qt_gui/translations/nl_NL.ts @@ -7,7 +7,7 @@ AboutDialog About shadPS4 - About shadPS4 + Over shadPS4 shadPS4 is an experimental open-source emulator for the PlayStation 4. @@ -582,7 +582,7 @@ Could not open the file for reading - Could not open the file for reading + Could not open the file for writing diff --git a/src/qt_gui/translations/sl_SI.ts b/src/qt_gui/translations/sl_SI.ts new file mode 100644 index 000000000..ab61a5d3a --- /dev/null +++ b/src/qt_gui/translations/sl_SI.ts @@ -0,0 +1,2081 @@ + + + + + + AboutDialog + + About shadPS4 + About shadPS4 + + + shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 is an experimental open-source emulator for the PlayStation 4. + + + This software should not be used to play games you have not legally obtained. + This software should not be used to play games you have not legally obtained. + + + + CheatsPatches + + Cheats / Patches for + Cheats / Patches for + + + Cheats/Patches are experimental.\nUse with caution.\n\nDownload cheats individually by selecting the repository and clicking the download button.\nIn the Patches tab, you can download all patches at once, choose which ones you want to use, and save your selection.\n\nSince we do not develop the Cheats/Patches,\nplease report issues to the cheat author.\n\nCreated a new cheat? Visit:\n + Cheats/Patches are experimental.\nUse with caution.\n\nDownload cheats individually by selecting the repository and clicking the download button.\nIn the Patches tab, you can download all patches at once, choose which ones you want to use, and save your selection.\n\nSince we do not develop the Cheats/Patches,\nplease report issues to the cheat author.\n\nCreated a new cheat? Visit:\n + + + No Image Available + No Image Available + + + Serial: + Serial: + + + Version: + Version: + + + Size: + Size: + + + Select Cheat File: + Select Cheat File: + + + Repository: + Repository: + + + Download Cheats + Download Cheats + + + Delete File + Delete File + + + No files selected. + No files selected. + + + You can delete the cheats you don't want after downloading them. + You can delete the cheats you don't want after downloading them. + + + Do you want to delete the selected file?\n%1 + Do you want to delete the selected file?\n%1 + + + Select Patch File: + Select Patch File: + + + Download Patches + Download Patches + + + Save + Save + + + Cheats + Cheats + + + Patches + Patches + + + Error + Error + + + No patch selected. + No patch selected. + + + Unable to open files.json for reading. + Unable to open files.json for reading. + + + No patch file found for the current serial. + No patch file found for the current serial. + + + Unable to open the file for reading. + Unable to open the file for reading. + + + Unable to open the file for writing. + Unable to open the file for writing. + + + Failed to parse XML: + Failed to parse XML: + + + Success + Success + + + Options saved successfully. + Options saved successfully. + + + Invalid Source + Invalid Source + + + The selected source is invalid. + The selected source is invalid. + + + File Exists + File Exists + + + File already exists. Do you want to replace it? + File already exists. Do you want to replace it? + + + Failed to save file: + Failed to save file: + + + Failed to download file: + Failed to download file: + + + Cheats Not Found + Cheats Not Found + + + No Cheats found for this game in this version of the selected repository,try another repository or a different version of the game. + No Cheats found for this game in this version of the selected repository,try another repository or a different version of the game. + + + Cheats Downloaded Successfully + Cheats Downloaded Successfully + + + You have successfully downloaded the cheats for this version of the game from the selected repository. You can try downloading from another repository, if it is available it will also be possible to use it by selecting the file from the list. + You have successfully downloaded the cheats for this version of the game from the selected repository. You can try downloading from another repository, if it is available it will also be possible to use it by selecting the file from the list. + + + Failed to save: + Failed to save: + + + Failed to download: + Failed to download: + + + Download Complete + Download Complete + + + Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. + Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. + + + Failed to parse JSON data from HTML. + Failed to parse JSON data from HTML. + + + Failed to retrieve HTML page. + Failed to retrieve HTML page. + + + The game is in version: %1 + The game is in version: %1 + + + The downloaded patch only works on version: %1 + The downloaded patch only works on version: %1 + + + You may need to update your game. + You may need to update your game. + + + Incompatibility Notice + Incompatibility Notice + + + Failed to open file: + Failed to open file: + + + XML ERROR: + XML ERROR: + + + Failed to open files.json for writing + Failed to open files.json for writing + + + Author: + Author: + + + Directory does not exist: + Directory does not exist: + + + Failed to open files.json for reading. + Failed to open files.json for reading. + + + Name: + Name: + + + Can't apply cheats before the game is started + Can't apply cheats before the game is started + + + Close + Close + + + + CheckUpdate + + Auto Updater + Auto Updater + + + Error + Error + + + Network error: + Network error: + + + The Auto Updater allows up to 60 update checks per hour.\nYou have reached this limit. Please try again later. + The Auto Updater allows up to 60 update checks per hour.\nYou have reached this limit. Please try again later. + + + Failed to parse update information. + Failed to parse update information. + + + No pre-releases found. + No pre-releases found. + + + Invalid release data. + Invalid release data. + + + No download URL found for the specified asset. + No download URL found for the specified asset. + + + Your version is already up to date! + Your version is already up to date! + + + Update Available + Update Available + + + Update Channel + Update Channel + + + Current Version + Current Version + + + Latest Version + Latest Version + + + Do you want to update? + Do you want to update? + + + Show Changelog + Show Changelog + + + Check for Updates at Startup + Check for Updates at Startup + + + Update + Update + + + No + No + + + Hide Changelog + Hide Changelog + + + Changes + Changes + + + Network error occurred while trying to access the URL + Network error occurred while trying to access the URL + + + Download Complete + Download Complete + + + The update has been downloaded, press OK to install. + The update has been downloaded, press OK to install. + + + Failed to save the update file at + Failed to save the update file at + + + Starting Update... + Starting Update... + + + Failed to create the update script file + Failed to create the update script file + + + + CompatibilityInfoClass + + Fetching compatibility data, please wait + Fetching compatibility data, please wait + + + Cancel + Cancel + + + Loading... + Loading... + + + Error + Error + + + Unable to update compatibility data! Try again later. + Unable to update compatibility data! Try again later. + + + Unable to open compatibility_data.json for writing. + Unable to open compatibility_data.json for writing. + + + Unknown + Unknown + + + Nothing + Nothing + + + Boots + Boots + + + Menus + Menus + + + Ingame + Ingame + + + Playable + Playable + + + + ControlSettings + + Configure Controls + Configure Controls + + + D-Pad + D-Pad + + + Up + Up + + + Left + Left + + + Right + Right + + + Down + Down + + + Left Stick Deadzone (def:2 max:127) + Left Stick Deadzone (def:2 max:127) + + + Left Deadzone + Left Deadzone + + + Left Stick + Left Stick + + + Config Selection + Config Selection + + + Common Config + Common Config + + + Use per-game configs + Use per-game configs + + + L1 / LB + L1 / LB + + + L2 / LT + L2 / LT + + + Back + Back + + + R1 / RB + R1 / RB + + + R2 / RT + R2 / RT + + + L3 + L3 + + + Options / Start + Options / Start + + + R3 + R3 + + + Face Buttons + Face Buttons + + + Triangle / Y + Triangle / Y + + + Square / X + Square / X + + + Circle / B + Circle / B + + + Cross / A + Cross / A + + + Right Stick Deadzone (def:2, max:127) + Right Stick Deadzone (def:2, max:127) + + + Right Deadzone + Right Deadzone + + + Right Stick + Right Stick + + + Color Adjustment + Color Adjustment + + + R: + R: + + + G: + G: + + + B: + B: + + + Override Lightbar Color + Override Lightbar Color + + + Override Color + Override Color + + + Unable to Save + Unable to Save + + + Cannot bind axis values more than once + Cannot bind axis values more than once + + + Save + Save + + + Apply + Apply + + + Restore Defaults + Restore Defaults + + + Cancel + Cancel + + + + EditorDialog + + Edit Keyboard + Mouse and Controller input bindings + Edit Keyboard + Mouse and Controller input bindings + + + Use Per-Game configs + Use Per-Game configs + + + Error + Error + + + Could not open the file for reading + Could not open the file for reading + + + Could not open the file for writing + Could not open the file for writing + + + Save Changes + Save Changes + + + Do you want to save changes? + Do you want to save changes? + + + Help + Help + + + Do you want to reset your custom default config to the original default config? + Do you want to reset your custom default config to the original default config? + + + Do you want to reset this config to your custom default config? + Do you want to reset this config to your custom default config? + + + Reset to Default + Reset to Default + + + + ElfViewer + + Open Folder + Open Folder + + + + GameInfoClass + + Loading game list, please wait :3 + Loading game list, please wait :3 + + + Cancel + Cancel + + + Loading... + Loading... + + + + GameInstallDialog + + shadPS4 - Choose directory + shadPS4 - Choose directory + + + Directory to install games + Directory to install games + + + Browse + Browse + + + Error + Error + + + Directory to install DLC + Directory to install DLC + + + + GameListFrame + + Icon + Icon + + + Name + Name + + + Serial + Serial + + + Compatibility + Compatibility + + + Region + Region + + + Firmware + Firmware + + + Size + Size + + + Version + Version + + + Path + Path + + + Play Time + Play Time + + + Never Played + Never Played + + + h + h + + + m + m + + + s + s + + + Compatibility is untested + Compatibility is untested + + + Game does not initialize properly / crashes the emulator + Game does not initialize properly / crashes the emulator + + + Game boots, but only displays a blank screen + Game boots, but only displays a blank screen + + + Game displays an image but does not go past the menu + Game displays an image but does not go past the menu + + + Game has game-breaking glitches or unplayable performance + Game has game-breaking glitches or unplayable performance + + + Game can be completed with playable performance and no major glitches + Game can be completed with playable performance and no major glitches + + + Click to see details on github + Click to see details on github + + + Last updated + Last updated + + + + GameListUtils + + B + B + + + KB + KB + + + MB + MB + + + GB + GB + + + TB + TB + + + + GuiContextMenus + + Create Shortcut + Create Shortcut + + + Cheats / Patches + Cheats / Patches + + + SFO Viewer + SFO Viewer + + + Trophy Viewer + Trophy Viewer + + + Open Folder... + Open Folder... + + + Open Game Folder + Open Game Folder + + + Open Save Data Folder + Open Save Data Folder + + + Open Log Folder + Open Log Folder + + + Copy info... + Copy info... + + + Copy Name + Copy Name + + + Copy Serial + Copy Serial + + + Copy Version + Copy Version + + + Copy Size + Copy Size + + + Copy All + Copy All + + + Delete... + Delete... + + + Delete Game + Delete Game + + + Delete Update + Delete Update + + + Delete DLC + Delete DLC + + + Delete Trophy + Delete Trophy + + + Compatibility... + Compatibility... + + + Update database + Update database + + + View report + View report + + + Submit a report + Submit a report + + + Shortcut creation + Shortcut creation + + + Shortcut created successfully! + Shortcut created successfully! + + + Error + Error + + + Error creating shortcut! + Error creating shortcut! + + + Game + Game + + + This game has no update to delete! + This game has no update to delete! + + + Update + Update + + + This game has no DLC to delete! + This game has no DLC to delete! + + + DLC + DLC + + + Delete %1 + Delete %1 + + + Are you sure you want to delete %1's %2 directory? + Are you sure you want to delete %1's %2 directory? + + + Open Update Folder + Open Update Folder + + + Delete Save Data + Delete Save Data + + + This game has no update folder to open! + This game has no update folder to open! + + + No log file found for this game! + No log file found for this game! + + + Failed to convert icon. + Failed to convert icon. + + + This game has no save data to delete! + This game has no save data to delete! + + + This game has no saved trophies to delete! + This game has no saved trophies to delete! + + + Save Data + Save Data + + + Trophy + Trophy + + + SFO Viewer for + SFO Viewer for + + + + HelpDialog + + Quickstart + Quickstart + + + FAQ + FAQ + + + Syntax + Syntax + + + Special Bindings + Special Bindings + + + Keybindings + Keybindings + + + + KBMSettings + + Configure Controls + Configure Controls + + + D-Pad + D-Pad + + + Up + Up + + + unmapped + unmapped + + + Left + Left + + + Right + Right + + + Down + Down + + + Left Analog Halfmode + Left Analog Halfmode + + + hold to move left stick at half-speed + hold to move left stick at half-speed + + + Left Stick + Left Stick + + + Config Selection + Config Selection + + + Common Config + Common Config + + + Use per-game configs + Use per-game configs + + + L1 + L1 + + + L2 + L2 + + + Text Editor + Text Editor + + + Help + Help + + + R1 + R1 + + + R2 + R2 + + + L3 + L3 + + + Touchpad Click + Touchpad Click + + + Mouse to Joystick + Mouse to Joystick + + + *press F7 ingame to activate + *press F7 ingame to activate + + + R3 + R3 + + + Options + Options + + + Mouse Movement Parameters + Mouse Movement Parameters + + + note: click Help Button/Special Keybindings for more information + note: click Help Button/Special Keybindings for more information + + + Face Buttons + Face Buttons + + + Triangle + Triangle + + + Square + Square + + + Circle + Circle + + + Cross + Cross + + + Right Analog Halfmode + Right Analog Halfmode + + + hold to move right stick at half-speed + hold to move right stick at half-speed + + + Right Stick + Right Stick + + + Speed Offset (def 0.125): + Speed Offset (def 0.125): + + + Copy from Common Config + Copy from Common Config + + + Deadzone Offset (def 0.50): + Deadzone Offset (def 0.50): + + + Speed Multiplier (def 1.0): + Speed Multiplier (def 1.0): + + + Common Config Selected + Common Config Selected + + + This button copies mappings from the Common Config to the currently selected profile, and cannot be used when the currently selected profile is the Common Config. + This button copies mappings from the Common Config to the currently selected profile, and cannot be used when the currently selected profile is the Common Config. + + + Copy values from Common Config + Copy values from Common Config + + + Do you want to overwrite existing mappings with the mappings from the Common Config? + Do you want to overwrite existing mappings with the mappings from the Common Config? + + + Unable to Save + Unable to Save + + + Cannot bind any unique input more than once + Cannot bind any unique input more than once + + + Press a key + Press a key + + + Cannot set mapping + Cannot set mapping + + + Mousewheel cannot be mapped to stick outputs + Mousewheel cannot be mapped to stick outputs + + + Save + Save + + + Apply + Apply + + + Restore Defaults + Restore Defaults + + + Cancel + Cancel + + + + MainWindow + + Open/Add Elf Folder + Open/Add Elf Folder + + + Boot Game + Boot Game + + + Check for Updates + Check for Updates + + + About shadPS4 + About shadPS4 + + + Configure... + Configure... + + + Recent Games + Recent Games + + + Open shadPS4 Folder + Open shadPS4 Folder + + + Exit + Exit + + + Exit shadPS4 + Exit shadPS4 + + + Exit the application. + Exit the application. + + + Show Game List + Show Game List + + + Game List Refresh + Game List Refresh + + + Tiny + Tiny + + + Small + Small + + + Medium + Medium + + + Large + Large + + + List View + List View + + + Grid View + Grid View + + + Elf Viewer + Elf Viewer + + + Game Install Directory + Game Install Directory + + + Download Cheats/Patches + Download Cheats/Patches + + + Dump Game List + Dump Game List + + + Trophy Viewer + Trophy Viewer + + + No games found. Please add your games to your library first. + No games found. Please add your games to your library first. + + + Search... + Search... + + + File + File + + + View + View + + + Game List Icons + Game List Icons + + + Game List Mode + Game List Mode + + + Settings + Settings + + + Utils + Utils + + + Themes + Themes + + + Help + Help + + + Dark + Dark + + + Light + Light + + + Green + Green + + + Blue + Blue + + + Violet + Violet + + + toolBar + toolBar + + + Game List + Game List + + + * Unsupported Vulkan Version + * Unsupported Vulkan Version + + + Download Cheats For All Installed Games + Download Cheats For All Installed Games + + + Download Patches For All Games + Download Patches For All Games + + + Download Complete + Download Complete + + + You have downloaded cheats for all the games you have installed. + You have downloaded cheats for all the games you have installed. + + + Patches Downloaded Successfully! + Patches Downloaded Successfully! + + + All Patches available for all games have been downloaded. + All Patches available for all games have been downloaded. + + + Games: + Games: + + + ELF files (*.bin *.elf *.oelf) + ELF files (*.bin *.elf *.oelf) + + + Game Boot + Game Boot + + + Only one file can be selected! + Only one file can be selected! + + + Run Game + Run Game + + + Eboot.bin file not found + Eboot.bin file not found + + + Game is already running! + Game is already running! + + + shadPS4 + shadPS4 + + + Play + Play + + + Pause + Pause + + + Stop + Stop + + + Restart + Restart + + + Full Screen + Full Screen + + + Controllers + Controllers + + + Keyboard + Keyboard + + + Refresh List + Refresh List + + + Resume + Resume + + + Show Labels Under Icons + Show Labels Under Icons + + + + SettingsDialog + + Settings + Settings + + + General + General + + + System + System + + + Console Language + Console Language + + + Emulator Language + Emulator Language + + + Emulator + Emulator + + + Default tab when opening settings + Default tab when opening settings + + + Show Game Size In List + Show Game Size In List + + + Show Splash + Show Splash + + + Enable Discord Rich Presence + Enable Discord Rich Presence + + + Username + Username + + + Trophy Key + Trophy Key + + + Trophy + Trophy + + + Open the custom trophy images/sounds folder + Open the custom trophy images/sounds folder + + + Logger + Logger + + + Log Type + Log Type + + + Log Filter + Log Filter + + + Open Log Location + Open Log Location + + + Input + Input + + + Cursor + Cursor + + + Hide Cursor + Hide Cursor + + + Hide Cursor Idle Timeout + Hide Cursor Idle Timeout + + + s + s + + + Controller + Controller + + + Back Button Behavior + Back Button Behavior + + + Graphics + Graphics + + + GUI + GUI + + + User + User + + + Graphics Device + Graphics Device + + + Vblank Divider + Vblank Divider + + + Advanced + Advanced + + + Enable Shaders Dumping + Enable Shaders Dumping + + + Enable NULL GPU + Enable NULL GPU + + + Enable HDR + Enable HDR + + + Paths + Paths + + + Game Folders + Game Folders + + + Add... + Add... + + + Remove + Remove + + + Debug + Debug + + + Enable Debug Dumping + Enable Debug Dumping + + + Enable Vulkan Validation Layers + Enable Vulkan Validation Layers + + + Enable Vulkan Synchronization Validation + Enable Vulkan Synchronization Validation + + + Enable RenderDoc Debugging + Enable RenderDoc Debugging + + + Enable Crash Diagnostics + Enable Crash Diagnostics + + + Collect Shaders + Collect Shaders + + + Copy GPU Buffers + Copy GPU Buffers + + + Host Debug Markers + Host Debug Markers + + + Guest Debug Markers + Guest Debug Markers + + + Update + Update + + + Check for Updates at Startup + Check for Updates at Startup + + + Always Show Changelog + Always Show Changelog + + + Update Channel + Update Channel + + + Check for Updates + Check for Updates + + + GUI Settings + GUI Settings + + + Title Music + Title Music + + + Disable Trophy Notification + Disable Trophy Notification + + + Background Image + Background Image + + + Show Background Image + Show Background Image + + + Opacity + Opacity + + + Play title music + Play title music + + + Update Compatibility Database On Startup + Update Compatibility Database On Startup + + + Game Compatibility + Game Compatibility + + + Display Compatibility Data + Display Compatibility Data + + + Update Compatibility Database + Update Compatibility Database + + + Volume + Volume + + + Save + Save + + + Apply + Apply + + + Restore Defaults + Restore Defaults + + + Close + Close + + + Point your mouse at an option to display its description. + Point your mouse at an option to display its description. + + + Console Language:\nSets the language that the PS4 game uses.\nIt's recommended to set this to a language the game supports, which will vary by region. + Console Language:\nSets the language that the PS4 game uses.\nIt's recommended to set this to a language the game supports, which will vary by region. + + + Emulator Language:\nSets the language of the emulator's user interface. + Emulator Language:\nSets the language of the emulator's user interface. + + + Show Splash Screen:\nShows the game's splash screen (a special image) while the game is starting. + Show Splash Screen:\nShows the game's splash screen (a special image) while the game is starting. + + + Enable Discord Rich Presence:\nDisplays the emulator icon and relevant information on your Discord profile. + Enable Discord Rich Presence:\nDisplays the emulator icon and relevant information on your Discord profile. + + + Username:\nSets the PS4's account username, which may be displayed by some games. + Username:\nSets the PS4's account username, which may be displayed by some games. + + + Trophy Key:\nKey used to decrypt trophies. Must be obtained from your jailbroken console.\nMust contain only hex characters. + Trophy Key:\nKey used to decrypt trophies. Must be obtained from your jailbroken console.\nMust contain only hex characters. + + + Log Type:\nSets whether to synchronize the output of the log window for performance. May have adverse effects on emulation. + Log Type:\nSets whether to synchronize the output of the log window for performance. May have adverse effects on emulation. + + + Log Filter:\nFilters the log to only print specific information.\nExamples: "Core:Trace" "Lib.Pad:Debug Common.Filesystem:Error" "*:Critical"\nLevels: Trace, Debug, Info, Warning, Error, Critical - in this order, a specific level silences all levels preceding it in the list and logs every level after it. + Log Filter:\nFilters the log to only print specific information.\nExamples: "Core:Trace" "Lib.Pad:Debug Common.Filesystem:Error" "*:Critical"\nLevels: Trace, Debug, Info, Warning, Error, Critical - in this order, a specific level silences all levels preceding it in the list and logs every level after it. + + + Update:\nRelease: Official versions released every month that may be very outdated, but are more reliable and tested.\nNightly: Development versions that have all the latest features and fixes, but may contain bugs and are less stable. + Update:\nRelease: Official versions released every month that may be very outdated, but are more reliable and tested.\nNightly: Development versions that have all the latest features and fixes, but may contain bugs and are less stable. + + + Background Image:\nControl the opacity of the game background image. + Background Image:\nControl the opacity of the game background image. + + + Play Title Music:\nIf a game supports it, enable playing special music when selecting the game in the GUI. + Play Title Music:\nIf a game supports it, enable playing special music when selecting the game in the GUI. + + + Disable Trophy Pop-ups:\nDisable in-game trophy notifications. Trophy progress can still be tracked using the Trophy Viewer (right-click the game in the main window). + Disable Trophy Pop-ups:\nDisable in-game trophy notifications. Trophy progress can still be tracked using the Trophy Viewer (right-click the game in the main window). + + + Hide Cursor:\nChoose when the cursor will disappear:\nNever: You will always see the mouse.\nidle: Set a time for it to disappear after being idle.\nAlways: you will never see the mouse. + Hide Cursor:\nChoose when the cursor will disappear:\nNever: You will always see the mouse.\nidle: Set a time for it to disappear after being idle.\nAlways: you will never see the mouse. + + + Hide Idle Cursor Timeout:\nThe duration (seconds) after which the cursor that has been idle hides itself. + Hide Idle Cursor Timeout:\nThe duration (seconds) after which the cursor that has been idle hides itself. + + + Back Button Behavior:\nSets the controller's back button to emulate tapping the specified position on the PS4 touchpad. + Back Button Behavior:\nSets the controller's back button to emulate tapping the specified position on the PS4 touchpad. + + + Display Compatibility Data:\nDisplays game compatibility information in table view. Enable "Update Compatibility On Startup" to get up-to-date information. + Display Compatibility Data:\nDisplays game compatibility information in table view. Enable "Update Compatibility On Startup" to get up-to-date information. + + + Update Compatibility On Startup:\nAutomatically update the compatibility database when shadPS4 starts. + Update Compatibility On Startup:\nAutomatically update the compatibility database when shadPS4 starts. + + + Update Compatibility Database:\nImmediately update the compatibility database. + Update Compatibility Database:\nImmediately update the compatibility database. + + + Never + Never + + + Idle + Idle + + + Always + Always + + + Touchpad Left + Touchpad Left + + + Touchpad Right + Touchpad Right + + + Touchpad Center + Touchpad Center + + + None + None + + + Graphics Device:\nOn multiple GPU systems, select the GPU the emulator will use from the drop down list,\nor select "Auto Select" to automatically determine it. + Graphics Device:\nOn multiple GPU systems, select the GPU the emulator will use from the drop down list,\nor select "Auto Select" to automatically determine it. + + + Width/Height:\nSets the size of the emulator window at launch, which can be resized during gameplay.\nThis is different from the in-game resolution. + Width/Height:\nSets the size of the emulator window at launch, which can be resized during gameplay.\nThis is different from the in-game resolution. + + + Vblank Divider:\nThe frame rate at which the emulator refreshes at is multiplied by this number. Changing this may have adverse effects, such as increasing the game speed, or breaking critical game functionality that does not expect this to change! + Vblank Divider:\nThe frame rate at which the emulator refreshes at is multiplied by this number. Changing this may have adverse effects, such as increasing the game speed, or breaking critical game functionality that does not expect this to change! + + + Enable Shaders Dumping:\nFor the sake of technical debugging, saves the games shaders to a folder as they render. + Enable Shaders Dumping:\nFor the sake of technical debugging, saves the games shaders to a folder as they render. + + + Enable Null GPU:\nFor the sake of technical debugging, disables game rendering as if there were no graphics card. + Enable Null GPU:\nFor the sake of technical debugging, disables game rendering as if there were no graphics card. + + + Enable HDR:\nEnables HDR in games that support it.\nYour monitor must have support for the BT2020 PQ color space and the RGB10A2 swapchain format. + Enable HDR:\nEnables HDR in games that support it.\nYour monitor must have support for the BT2020 PQ color space and the RGB10A2 swapchain format. + + + Game Folders:\nThe list of folders to check for installed games. + Game Folders:\nThe list of folders to check for installed games. + + + Add:\nAdd a folder to the list. + Add:\nAdd a folder to the list. + + + Remove:\nRemove a folder from the list. + Remove:\nRemove a folder from the list. + + + Enable Debug Dumping:\nSaves the import and export symbols and file header information of the currently running PS4 program to a directory. + Enable Debug Dumping:\nSaves the import and export symbols and file header information of the currently running PS4 program to a directory. + + + Enable Vulkan Validation Layers:\nEnables a system that validates the state of the Vulkan renderer and logs information about its internal state.\nThis will reduce performance and likely change the behavior of emulation. + Enable Vulkan Validation Layers:\nEnables a system that validates the state of the Vulkan renderer and logs information about its internal state.\nThis will reduce performance and likely change the behavior of emulation. + + + Enable Vulkan Synchronization Validation:\nEnables a system that validates the timing of Vulkan rendering tasks.\nThis will reduce performance and likely change the behavior of emulation. + Enable Vulkan Synchronization Validation:\nEnables a system that validates the timing of Vulkan rendering tasks.\nThis will reduce performance and likely change the behavior of emulation. + + + Enable RenderDoc Debugging:\nIf enabled, the emulator will provide compatibility with Renderdoc to allow capture and analysis of the currently rendered frame. + Enable RenderDoc Debugging:\nIf enabled, the emulator will provide compatibility with Renderdoc to allow capture and analysis of the currently rendered frame. + + + Collect Shaders:\nYou need this enabled to edit shaders with the debug menu (Ctrl + F10). + Collect Shaders:\nYou need this enabled to edit shaders with the debug menu (Ctrl + F10). + + + Crash Diagnostics:\nCreates a .yaml file with info about the Vulkan state at the time of crashing.\nUseful for debugging 'Device lost' errors. If you have this enabled, you should enable Host AND Guest Debug Markers.\nDoes not work on Intel GPUs.\nYou need Vulkan Validation Layers enabled and the Vulkan SDK for this to work. + Crash Diagnostics:\nCreates a .yaml file with info about the Vulkan state at the time of crashing.\nUseful for debugging 'Device lost' errors. If you have this enabled, you should enable Host AND Guest Debug Markers.\nDoes not work on Intel GPUs.\nYou need Vulkan Validation Layers enabled and the Vulkan SDK for this to work. + + + Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. + Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. + + + Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + + + Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + + + Save Data Path:\nThe folder where game save data will be saved. + Save Data Path:\nThe folder where game save data will be saved. + + + Browse:\nBrowse for a folder to set as the save data path. + Browse:\nBrowse for a folder to set as the save data path. + + + Release + Release + + + Nightly + Nightly + + + Set the volume of the background music. + Set the volume of the background music. + + + Enable Motion Controls + Enable Motion Controls + + + Save Data Path + Save Data Path + + + Browse + Browse + + + async + async + + + sync + sync + + + Auto Select + Auto Select + + + Directory to install games + Directory to install games + + + Directory to save data + Directory to save data + + + Video + Video + + + Display Mode + Display Mode + + + Windowed + Windowed + + + Fullscreen + Fullscreen + + + Fullscreen (Borderless) + Fullscreen (Borderless) + + + Window Size + Window Size + + + W: + W: + + + H: + H: + + + Separate Log Files + Separate Log Files + + + Separate Log Files:\nWrites a separate logfile for each game. + Separate Log Files:\nWrites a separate logfile for each game. + + + Trophy Notification Position + Trophy Notification Position + + + Left + Left + + + Right + Right + + + Top + Top + + + Bottom + Bottom + + + Notification Duration + Notification Duration + + + Portable User Folder + Portable User Folder + + + Create Portable User Folder from Common User Folder + Create Portable User Folder from Common User Folder + + + Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. + Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. + + + Cannot create portable user folder + Cannot create portable user folder + + + %1 already exists + %1 already exists + + + Portable user folder created + Portable user folder created + + + %1 successfully created. + %1 successfully created. + + + Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. + Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. + + + + TrophyViewer + + Trophy Viewer + Trophy Viewer + + + Select Game: + Select Game: + + + Progress + Progress + + + Show Earned Trophies + Show Earned Trophies + + + Show Not Earned Trophies + Show Not Earned Trophies + + + Show Hidden Trophies + Show Hidden Trophies + + + diff --git a/src/qt_gui/translations/zh_TW.ts b/src/qt_gui/translations/zh_TW.ts index 077455558..bd051651d 100644 --- a/src/qt_gui/translations/zh_TW.ts +++ b/src/qt_gui/translations/zh_TW.ts @@ -7,26 +7,26 @@ AboutDialog About shadPS4 - About shadPS4 + 關於 shadPS4 shadPS4 is an experimental open-source emulator for the PlayStation 4. - shadPS4 is an experimental open-source emulator for the PlayStation 4. + shadPS4 是一款試驗性質的 PlayStation 4 開源模擬器軟體。 This software should not be used to play games you have not legally obtained. - This software should not be used to play games you have not legally obtained. + 不得用此軟體來遊玩你未曾合法獲取的遊戲。 CheatsPatches Cheats / Patches for - Cheats / Patches for + 金手指/修補程式: Cheats/Patches are experimental.\nUse with caution.\n\nDownload cheats individually by selecting the repository and clicking the download button.\nIn the Patches tab, you can download all patches at once, choose which ones you want to use, and save your selection.\n\nSince we do not develop the Cheats/Patches,\nplease report issues to the cheat author.\n\nCreated a new cheat? Visit:\n - 作弊/補丁為實驗性功能。\n請小心使用。\n\n透過選擇儲存庫並點擊下載按鈕來單獨下載作弊程式。\n在“補丁”標籤頁中,您可以一次下載所有補丁,選擇要使用的補丁並保存您的選擇。\n\n由於我們不開發作弊/補丁,\n請將問題報告給作弊程式的作者。\n\n創建了新的作弊程式?請訪問:\n + 金手指/修補檔屬於試驗性質功能。\n請小心使用。\n\n透過選取儲存庫並點擊下載按鈕來單獨下載作弊程式。\n在“修補檔”標籤頁中,你可以一次下載所有修補檔,選擇要使用的補丁並保存您的選擇。\n\n由於我們不負責開發金手指/修補檔,\n請將問題匯報給作弊程式的作者。\n\n建立了新的作弊程式?請瀏覽:\n No Image Available @@ -34,27 +34,27 @@ Serial: - 序號: + 序號: Version: - 版本: + 版本: Size: - 大小: + 大小: Select Cheat File: - 選擇作弊檔案: + 選取金手指檔案: Repository: - 儲存庫: + 儲存庫: Download Cheats - 下載作弊碼 + 下載金手指 Delete File @@ -62,19 +62,19 @@ No files selected. - 沒有選擇檔案。 + 未選取檔案。 You can delete the cheats you don't want after downloading them. - 您可以在下載後刪除不需要的作弊碼。 + 下載後可以刪除不需要的金手指。 Do you want to delete the selected file?\n%1 - 您是否要刪除選定的檔案?\n%1 + 確定要刪除選取的檔案?\n%1 Select Patch File: - 選擇修補檔案: + 選取修補檔案: Download Patches @@ -86,7 +86,7 @@ Cheats - 作弊碼 + 金手指 Patches @@ -98,27 +98,27 @@ No patch selected. - 未選擇修補檔。 + 未選取修補檔。 Unable to open files.json for reading. - 無法打開 files.json 進行讀取。 + 無法開啟 files.json 進行讀取。 No patch file found for the current serial. - 找不到當前序號的修補檔。 + 找不到目前序號的修補檔。 Unable to open the file for reading. - 無法打開檔案進行讀取。 + 無法開啟檔案進行讀取。 Unable to open the file for writing. - 無法打開檔案進行寫入。 + 無法開啟檔案進行寫入。 Failed to parse XML: - 解析 XML 失敗: + 解析 XML 失敗: Success @@ -126,7 +126,7 @@ Options saved successfully. - 選項已成功儲存。 + 已成功儲存選項。 Invalid Source @@ -134,7 +134,7 @@ The selected source is invalid. - 選擇的來源無效。 + 選取的來源無效。 File Exists @@ -142,39 +142,39 @@ File already exists. Do you want to replace it? - 檔案已存在。您是否希望替換它? + 檔案已存在,您要取代嗎? Failed to save file: - 無法儲存檔案: + 無法儲存檔案: Failed to download file: - 無法下載檔案: + 無法下載檔案: Cheats Not Found - 未找到作弊碼 + 找不到金手指 No Cheats found for this game in this version of the selected repository,try another repository or a different version of the game. - 在此版本的儲存庫中未找到該遊戲的作弊碼,請嘗試另一個儲存庫或不同版本的遊戲。 + 在此版本的儲存庫中未找到該遊戲的金手指,請嘗試另一個儲存庫或不同版本的遊戲。 Cheats Downloaded Successfully - 作弊碼下載成功 + 全手指下載成功 You have successfully downloaded the cheats for this version of the game from the selected repository. You can try downloading from another repository, if it is available it will also be possible to use it by selecting the file from the list. - 您已成功下載該遊戲版本的作弊碼 從選定的儲存庫中。 您可以嘗試從其他儲存庫下載,如果可用,您也可以選擇從列表中選擇檔案來使用它。 + 你已成功從選取的儲存庫中下載該遊戲版本的金手指。 可用的話,你可以嘗試從其他儲存庫下載,你也可以從列表中選取檔案來使用它。 Failed to save: - 儲存失敗: + 儲存失敗: Failed to download: - 下載失敗: + 下載失敗: Download Complete @@ -182,15 +182,15 @@ Patches Downloaded Successfully! All Patches available for all games have been downloaded, there is no need to download them individually for each game as happens in Cheats. If the patch does not appear, it may be that it does not exist for the specific serial and version of the game. - 修補檔下載成功!所有遊戲的修補檔已下載完成,無需像作弊碼那樣為每個遊戲單獨下載。如果補丁未顯示,可能是該補丁不適用於特定的序號和遊戲版本。 + 修補檔下載成功!所有遊戲的修補檔已下載完成,無需像金手指那樣為每個遊戲單獨下載。如果修補檔仍未顯示,可能該修補檔是不適用於特定的序號和遊戲版本。 Failed to parse JSON data from HTML. - 無法從 HTML 解析 JSON 數據。 + 無法從 HTML 分析 JSON 資料。 Failed to retrieve HTML page. - 無法檢索 HTML 頁面。 + 無法接收 HTML 頁面。 The game is in version: %1 @@ -198,11 +198,11 @@ The downloaded patch only works on version: %1 - 下載的補丁僅適用於版本: %1 + 下載的修補檔僅適用於版本: %1 You may need to update your game. - 您可能需要更新遊戲。 + 你可能需要更新你的遊戲。 Incompatibility Notice @@ -210,35 +210,35 @@ Failed to open file: - 無法打開檔案: + 無法開啟檔案: XML ERROR: - XML 錯誤: + XML 錯誤: Failed to open files.json for writing - 無法打開 files.json 進行寫入 + 無法開啟 files.json 進行寫入 Author: - 作者: + 作者: Directory does not exist: - 目錄不存在: + 目錄不存在: Failed to open files.json for reading. - 無法打開 files.json 進行讀取。 + 無法開啟 files.json 進行讀取。 Name: - 名稱: + 名稱: Can't apply cheats before the game is started - 在遊戲開始之前無法應用作弊。 + 在遊戲'開始之前無法套用金手指 Close @@ -265,19 +265,19 @@ Failed to parse update information. - 無法解析更新資訊。 + 無法分析更新資訊。 No pre-releases found. - 未找到預發布版本。 + 未找到預發佈版本。 Invalid release data. - 無效的發行數據。 + 無效的發佈資料。 No download URL found for the specified asset. - 未找到指定資產的下載 URL。 + 未找到指定資源的下載 URL。 Your version is already up to date! @@ -293,7 +293,7 @@ Current Version - 當前版本 + 目前版本 Latest Version @@ -301,7 +301,7 @@ Do you want to update? - 您想要更新嗎? + 你要更新嗎? Show Changelog @@ -321,7 +321,7 @@ Hide Changelog - 隱藏變更日誌 + 隱藏變更日誌紀錄 Changes @@ -329,7 +329,7 @@ Network error occurred while trying to access the URL - 嘗試訪問 URL 時發生網路錯誤 + 嘗試存取 URL 時發生了網路錯誤 Download Complete @@ -337,11 +337,11 @@ The update has been downloaded, press OK to install. - 更新已下載,按 OK 安裝。 + 已下載更新,按 OK 安裝。 Failed to save the update file at - 無法將更新文件保存到 + 無法將更新檔案儲存到 Starting Update... @@ -349,7 +349,7 @@ Failed to create the update script file - 無法創建更新腳本文件 + 無法建立更新程式碼檔案 @@ -364,7 +364,7 @@ Loading... - 載入中... + 正在載入… Error @@ -388,134 +388,134 @@ Boots - 靴子 + 可啟動 Menus - 選單 + 可顯示標題畫面 Ingame - 遊戲內 + 可進入遊戲 Playable - 可玩 + 可如常遊玩 ControlSettings Configure Controls - 操控設定 + 操控組態 D-Pad - D-Pad + 十字方向鍵 Up - Up + Left - Left + Right - Right + Down - Down + Left Stick Deadzone (def:2 max:127) - Left Stick Deadzone (def:2 max:127) + 左搖桿無效區域(預設:2 最大:127) Left Deadzone - Left Deadzone + 左無效區域 Left Stick - Left Stick + 左搖桿 Config Selection - Config Selection + 選取組態 Common Config - Common Config + 通用組態 Use per-game configs - Use per-game configs + 使用個別遊戲組態 L1 / LB - L1 / LB + L1 / LB L2 / LT - L2 / LT + L2 / LT Back - Back + Back R1 / RB - R1 / RB + R1 / RB R2 / RT - R2 / RT + R2 / RT L3 - L3 + L3 Options / Start - Options / Start + Options / Start R3 - R3 + R3 Face Buttons - Face Buttons + 功能鍵(動作按鈕) Triangle / Y - Triangle / Y + 三角 / Y Square / X - Square / X + 正方 / X Circle / B - Circle / B + 圖形 / B Cross / A - Cross / A + 交叉 / A Right Stick Deadzone (def:2, max:127) - Right Stick Deadzone (def:2, max:127) + 右搖桿無效區域(預設:2 最大:127) Right Deadzone - Right Deadzone + 右無效區域 Right Stick - Right Stick + 右搖桿 Color Adjustment @@ -523,35 +523,35 @@ R: - R: + 紅: G: - G: + 綠: B: - B: + 藍: Override Lightbar Color - Override Lightbar Color + 覆寫燈條顏色 Override Color - Override Color + 覆寫顏色 Unable to Save - 無法保存 + 無法儲存 Cannot bind axis values more than once - Cannot bind axis values more than once + 不能同時連結多個方向軸設定值 Save - 保存 + 儲存 Apply @@ -559,7 +559,7 @@ Restore Defaults - Restore Defaults + 還原成預設值 Cancel @@ -570,11 +570,11 @@ EditorDialog Edit Keyboard + Mouse and Controller input bindings - Edit Keyboard + Mouse and Controller input bindings + 編輯鍵盤滑鼠和控制器按鈕連結 Use Per-Game configs - Use Per-Game configs + 使用個別遊戲組態 Error @@ -582,11 +582,11 @@ Could not open the file for reading - Could not open the file for reading + 無法開啟檔案進行讀取 Could not open the file for writing - Could not open the file for writing + 無法開啟檔案進行寫入 Save Changes @@ -594,68 +594,68 @@ Do you want to save changes? - Do you want to save changes? + 你要儲存變更嗎? Help - Help + 幫助 Do you want to reset your custom default config to the original default config? - Do you want to reset your custom default config to the original default config? + 你要將自訂預設組態還原成原始預設組態嗎? Do you want to reset this config to your custom default config? - Do you want to reset this config to your custom default config? + 你要將此組態還原成自訂預設組態嗎? Reset to Default - Reset to Default + 還原成預設值 ElfViewer Open Folder - Open Folder + 開啟資料夾 GameInfoClass Loading game list, please wait :3 - Loading game list, please wait :3 + 正在載入遊戲列表,請稍候 :3 Cancel - Cancel + 取消 Loading... - Loading... + 正在載入… GameInstallDialog shadPS4 - Choose directory - shadPS4 - Choose directory + shadPS4 - 選取檔案目錄 Directory to install games - Directory to install games + 要安裝遊戲的目錄 Browse - Browse + 瀏覽 Error - Error + 錯誤 Directory to install DLC - Directory to install DLC + 要安裝DLC的目錄 @@ -674,7 +674,7 @@ Compatibility - Compatibility + 相容性 Region @@ -682,7 +682,7 @@ Firmware - 固件 + 韌體 Size @@ -702,43 +702,43 @@ Never Played - Never Played + 從未玩過 h - h + 小時 m - m + 分鐘 s - s + Compatibility is untested - Compatibility is untested + 未曾測試相容性 Game does not initialize properly / crashes the emulator - Game does not initialize properly / crashes the emulator + 無法正確初始化遊戲/模擬器當機 Game boots, but only displays a blank screen - Game boots, but only displays a blank screen + 遊戲可啟動,但只會顯示空白畫面 Game displays an image but does not go past the menu - Game displays an image but does not go past the menu + 可以顯示遊戲畫面,但是在標題畫面無法繼續 Game has game-breaking glitches or unplayable performance - Game has game-breaking glitches or unplayable performance + 遊戲有嚴重的BUG或者效能過低而無法遊玩 Game can be completed with playable performance and no major glitches - Game can be completed with playable performance and no major glitches + 遊戲能在可以合理遊玩的效能下破關也沒有重大BUG Click to see details on github @@ -753,447 +753,447 @@ GameListUtils B - B + B KB - KB + KB MB - MB + MB GB - GB + GB TB - TB + TB GuiContextMenus Create Shortcut - Create Shortcut + 建立捷徑 Cheats / Patches - Zuòbì / Xiūbǔ chéngshì + 金手指/修補程式 SFO Viewer - SFO Viewer + SFO 檢視器 Trophy Viewer - Trophy Viewer + 獎盃檢視器 Open Folder... - 打開資料夾... + 開啟資料夾… Open Game Folder - 打開遊戲資料夾 + 開啟遊戲資料夾 Open Save Data Folder - 打開存檔資料夾 + 開啟遊戲存檔資料夾 Open Log Folder - 打開日誌資料夾 + 開啟日誌紀錄資料夾 Copy info... - Copy info... + 複製資訊... Copy Name - Copy Name + 複製名稱 Copy Serial - Copy Serial + 複製序號 Copy Version - Copy Version + 複製版本資訊 Copy Size - Copy Size + 複製大小 Copy All - Copy All + 全部複製 Delete... - Delete... + 刪除… Delete Game - Delete Game + 刪除遊戲 Delete Update - Delete Update + 刪除更新 Delete DLC - Delete DLC + 刪除DLC Delete Trophy - Delete Trophy + 刪除獎盃 Compatibility... - Compatibility... + 相容性… Update database - Update database + 更新資料庫 View report - View report + 檢視報告 Submit a report - Submit a report + 提交報告 Shortcut creation - Shortcut creation + 建立捷徑 Shortcut created successfully! - Shortcut created successfully! + 成功建立捷徑! Error - Error + 錯誤 Error creating shortcut! - Error creating shortcut! + 建立捷徑出錯! Game - Game + 遊戲 This game has no update to delete! - This game has no update to delete! + 此遊戲沒有可刪除的更新! Update - Update + 更新 This game has no DLC to delete! - This game has no DLC to delete! + 此遊戲沒有可刪除的DLC! DLC - DLC + DLC Delete %1 - Delete %1 + 刪除 %1 Are you sure you want to delete %1's %2 directory? - Are you sure you want to delete %1's %2 directory? + 確定要刪除 %1' 的%2目錄? Open Update Folder - Open Update Folder + 開啟更新資料夾 Delete Save Data - Delete Save Data + 刪除遊戲存檔 This game has no update folder to open! - This game has no update folder to open! + 此遊戲沒有可開啟的更新資料夾! No log file found for this game! - No log file found for this game! + 找不到此遊戲的日誌紀錄檔! Failed to convert icon. - Failed to convert icon. + 轉換圖示失敗。 This game has no save data to delete! - This game has no save data to delete! + 此遊戲沒有可刪除的遊戲存檔! This game has no saved trophies to delete! - This game has no saved trophies to delete! + 此遊戲沒有可刪除的已儲存獎盃! Save Data - Save Data + 遊戲存檔 Trophy - Trophy + 獎盃 SFO Viewer for - SFO Viewer for + SFO 檢視器: HelpDialog Quickstart - Quickstart + 快速入門 FAQ - FAQ + 常見問答 Syntax - Syntax + 語法 Special Bindings - Special Bindings + 特殊連結 Keybindings - Keybindings + 按鍵連結 KBMSettings Configure Controls - Configure Controls + 操控組態 D-Pad - D-Pad + 十字方向鍵 Up - Up + unmapped - unmapped + 鍵位未有對應 Left - Left + Right - Right + Down - Down + Left Analog Halfmode - Left Analog Halfmode + 左類比搖桿半速模式 hold to move left stick at half-speed - hold to move left stick at half-speed + 按住可半速移動左搖桿 Left Stick - Left Stick + 左搖桿 Config Selection - Config Selection + 選取組態 Common Config - Common Config + 通用組態 Use per-game configs - Use per-game configs + 使用個別遊戲組態 L1 - L1 + L1 L2 - L2 + L2 Text Editor - Text Editor + 文字編輯器 Help - Help + 幫助 R1 - R1 + R1 R2 - R2 + R2 L3 - L3 + L3 Touchpad Click - Touchpad Click + 觸控板點擊 Mouse to Joystick - Mouse to Joystick + 滑鼠操控操縱桿 *press F7 ingame to activate - *press F7 ingame to activate + *在遊戲中按F7啟動 R3 - R3 + R3 Options - Options + Options Mouse Movement Parameters - Mouse Movement Parameters + 滑鼠指標移動參數 note: click Help Button/Special Keybindings for more information - note: click Help Button/Special Keybindings for more information + 注意:點擊 幫助 按鈕/特殊按鍵連結以取得更多資訊 Face Buttons - Face Buttons + 功能鍵(動作按鈕) Triangle - Triangle + 三角 Square - Square + 正方 Circle - Circle + 圓形 Cross - Cross + 交叉 Right Analog Halfmode - Right Analog Halfmode + 右類比搖桿半速模式 hold to move right stick at half-speed - hold to move right stick at half-speed + 按住可半速移動右搖桿 Right Stick - Right Stick + 右搖桿 Speed Offset (def 0.125): - Speed Offset (def 0.125): + 速度偏移量(預設為 0.125): Copy from Common Config - Copy from Common Config + 從通用組態中複製設定值 Deadzone Offset (def 0.50): - Deadzone Offset (def 0.50): + 無效區偏移量(預設為 0.50): Speed Multiplier (def 1.0): - Speed Multiplier (def 1.0): + 速度倍數(預設為 1.0): Common Config Selected - Common Config Selected + 已選取通用組態 This button copies mappings from the Common Config to the currently selected profile, and cannot be used when the currently selected profile is the Common Config. - This button copies mappings from the Common Config to the currently selected profile, and cannot be used when the currently selected profile is the Common Config. + 此按鈕會將通用組態中的鍵位對應複製到目前選取的組態檔案,選取通用組態時無法使用此按鈕。 Copy values from Common Config - Copy values from Common Config + 從通用組態中複製設定值 Do you want to overwrite existing mappings with the mappings from the Common Config? - Do you want to overwrite existing mappings with the mappings from the Common Config? + 你要將通用組態中的鍵位對應覆寫到現有的鍵位對應嗎? Unable to Save - Unable to Save + 無法儲存 Cannot bind any unique input more than once - Cannot bind any unique input more than once + 任何唯一的鍵位都不能重複連結 Press a key - Press a key + 按下按鍵 Cannot set mapping - Cannot set mapping + 無法設定鍵位對應 Mousewheel cannot be mapped to stick outputs - Mousewheel cannot be mapped to stick outputs + 滑鼠滾輪無法對應到搖桿輸出 Save - Save + 儲存 Apply - Apply + 套用 Restore Defaults - Restore Defaults + 還原成預設值 Cancel - Cancel + 取消 MainWindow Open/Add Elf Folder - Open/Add Elf Folder + 開啟/新增 Elf 資料夾 Boot Game - Boot Game + 啟動遊戲 Check for Updates @@ -1201,119 +1201,119 @@ About shadPS4 - About shadPS4 + 關於 shadPS4 Configure... - Configure... + 組態… Recent Games - Recent Games + 最近遊玩的遊戲 Open shadPS4 Folder - Open shadPS4 Folder + 開啟 shadPS4 資料夾 Exit - Exit + 退出 Exit shadPS4 - Exit shadPS4 + 退出 shadPS4 Exit the application. - Exit the application. + 退出應用程式。 Show Game List - Show Game List + 顯示遊戲列表 Game List Refresh - Game List Refresh + 重新整理遊戲列表 Tiny - Tiny + 微小 Small - Small + Medium - Medium + Large - Large + List View - List View + 以列表顯示 Grid View - Grid View + 以網格顯視 Elf Viewer - Elf Viewer + Elf 檢視器 Game Install Directory - Game Install Directory + 遊戲安裝目錄 Download Cheats/Patches - Xiàzài Zuòbì / Xiūbǔ chéngshì + 下載金手指/修補檔 Dump Game List - Dump Game List + 偵印遊戲列表 Trophy Viewer - Trophy Viewer + 獎盃檢視器 No games found. Please add your games to your library first. - No games found. Please add your games to your library first. + 找不到遊戲,請先將你的遊戲加入遊戲庫中。 Search... - Search... + 搜尋… File - File + 檔案 View - View + 檢視 Game List Icons - Game List Icons + 遊戲列表圖示 Game List Mode - Game List Mode + 遊戲列表模式 Settings - Settings + 設定 Utils - Utils + 工具 Themes - Themes + 主題 Help @@ -1321,27 +1321,27 @@ Dark - Dark + 深色 Light - Light + 淺色 Green - Green + 綠色 Blue - Blue + 藍色 Violet - Violet + 紫羅蘭色 toolBar - toolBar + 工具列 Game List @@ -1353,7 +1353,7 @@ Download Cheats For All Installed Games - 下載所有已安裝遊戲的作弊碼 + 下載所有已安裝遊戲的金手指 Download Patches For All Games @@ -1365,7 +1365,7 @@ You have downloaded cheats for all the games you have installed. - 您已經下載了所有已安裝遊戲的作弊碼。 + 你已下載所有已安裝遊戲的金手指。 Patches Downloaded Successfully! @@ -1377,7 +1377,7 @@ Games: - 遊戲: + 遊戲: ELF files (*.bin *.elf *.oelf) @@ -1389,102 +1389,102 @@ Only one file can be selected! - 只能選擇一個檔案! + 只能選取一個檔案! Run Game - Run Game + 執行遊戲 Eboot.bin file not found - Eboot.bin file not found + 找不到 Eboot.bin 檔案 Game is already running! - Game is already running! + 已在執行遊戲! shadPS4 - shadPS4 + shadPS4 Play - Play + 遊玩 Pause - Pause + 暫停 Stop - Stop + 停止 Restart - Restart + 重新啟動 Full Screen - Full Screen + 全螢幕 Controllers - Controllers + 控制器 Keyboard - Keyboard + 鍵盤 Refresh List - Refresh List + 重新整理列表 Resume - Resume + 繼續 Show Labels Under Icons - Show Labels Under Icons + 在圖示下方顯示標籤 SettingsDialog Settings - Settings + 設定 General - General + 一般 System - System + 系統 Console Language - Console Language + 主機語言 Emulator Language - Emulator Language + 模擬器語言 Emulator - Emulator + 模擬器 Default tab when opening settings - 打開設置時的默認選項卡 + 開啟設定時的預設選項頁面 Show Game Size In List - 顯示遊戲大小在列表中 + 在列表中顯示遊戲大小 Show Splash - Show Splash + 顯示啟動畫面 Enable Discord Rich Presence @@ -1492,35 +1492,35 @@ Username - Username + 使用者名稱 Trophy Key - Trophy Key + 獎盃金鑰 Trophy - Trophy + 獎盃 Open the custom trophy images/sounds folder - Open the custom trophy images/sounds folder + 開啟自訂獎盃圖像/音效資料夾 Logger - Logger + 日誌紀錄器 Log Type - Log Type + 日誌記錄類型 Log Filter - Log Filter + 日誌紀錄過濾器 Open Log Location - 開啟日誌位置 + 開啟日誌記錄位置 Input @@ -1528,19 +1528,19 @@ Cursor - 游標 + 滑鼠遊標 Hide Cursor - 隱藏游標 + 隱藏滑鼠指標 Hide Cursor Idle Timeout - 游標空閒超時隱藏 + 空閒滑鼠指標逾時隱藏 s - s + Controller @@ -1552,7 +1552,7 @@ Graphics - Graphics + 圖形 GUI @@ -1564,27 +1564,27 @@ Graphics Device - Graphics Device + 圖形裝置 Vblank Divider - Vblank Divider + Vblank 分隔符 Advanced - Advanced + 進階 Enable Shaders Dumping - Enable Shaders Dumping + 啟用著色器傾印 Enable NULL GPU - Enable NULL GPU + 啟用空值GPU Enable HDR - Enable HDR + 啟用 HDR Paths @@ -1596,7 +1596,7 @@ Add... - 添加... + 新增… Remove @@ -1604,43 +1604,43 @@ Debug - Debug + 偵錯 Enable Debug Dumping - Enable Debug Dumping + 啟用偵錯傾印 Enable Vulkan Validation Layers - Enable Vulkan Validation Layers + 啟用 Vulkan 驗證層 Enable Vulkan Synchronization Validation - Enable Vulkan Synchronization Validation + 啟用 Vulkan 同步驗證 Enable RenderDoc Debugging - Enable RenderDoc Debugging + 啟用 RenderDoc 偵錯 Enable Crash Diagnostics - Enable Crash Diagnostics + 啟用當機診斷 Collect Shaders - Collect Shaders + 收集著色器 Copy GPU Buffers - Copy GPU Buffers + 複製 GPU 緩衝區 Host Debug Markers - Host Debug Markers + Host 偵錯標記 Guest Debug Markers - Guest Debug Markers + Guest 偵錯標記 Update @@ -1664,27 +1664,27 @@ GUI Settings - 介面設置 + 介面設定 Title Music - Title Music + 標題音樂 Disable Trophy Notification - Disable Trophy Notification + 停用獎盃通知 Background Image - Background Image + 背景圖像 Show Background Image - Show Background Image + 顯示背景影像 Opacity - Opacity + 透明度 Play title music @@ -1692,19 +1692,19 @@ Update Compatibility Database On Startup - Update Compatibility Database On Startup + 啟動時更新相容性資料庫 Game Compatibility - Game Compatibility + 遊戲相容性 Display Compatibility Data - Display Compatibility Data + 顯示相容性資料 Update Compatibility Database - Update Compatibility Database + 更新相容性資料庫 Volume @@ -1720,7 +1720,7 @@ Restore Defaults - 還原預設值 + 還原成預設值 Close @@ -1728,79 +1728,79 @@ Point your mouse at an option to display its description. - 將鼠標指向選項以顯示其描述。 + 將滑鼠指標指向選項就會顯示其描述。 Console Language:\nSets the language that the PS4 game uses.\nIt's recommended to set this to a language the game supports, which will vary by region. - 主機語言:\n設定PS4遊戲使用的語言。\n建議將其設置為遊戲支持的語言,這會因地區而異。 + 主機語言:\n設定 PS4 遊戲使用的語言。 \n建議將其設定為遊戲'支援的語言,該語言因地區而異。 Emulator Language:\nSets the language of the emulator's user interface. - 模擬器語言:\n設定模擬器的用戶介面的語言。 + 模擬器語言:\n設定模擬器'的使用者介面語言。 Show Splash Screen:\nShows the game's splash screen (a special image) while the game is starting. - 顯示啟動畫面:\n在遊戲啟動時顯示遊戲的啟動畫面(特殊圖片)。 + 顯示啟動畫面:\n遊戲'開始時顯示遊戲的啟動畫面(特殊圖像)。 Enable Discord Rich Presence:\nDisplays the emulator icon and relevant information on your Discord profile. - 啟用 Discord Rich Presence:\n在您的 Discord 個人檔案上顯示模擬器圖標和相關信息。 + 啟用 Discord Rich Presence:\n在你的 Discord 個人檔案上顯示模擬器圖示和相關資訊。 Username:\nSets the PS4's account username, which may be displayed by some games. - 用戶名:\n設定PS4帳號的用戶名,某些遊戲中可能會顯示。 + 使用者名稱:\n設定 PS4 '的帳號使用者名稱,某些遊戲可能會顯示該使用者名稱。 Trophy Key:\nKey used to decrypt trophies. Must be obtained from your jailbroken console.\nMust contain only hex characters. - Trophy Key:\nKey used to decrypt trophies. Must be obtained from your jailbroken console.\nMust contain only hex characters. + 獎盃金鑰:\n用於解密獎盃的金鑰,必須從你的越獄主機中獲取。 \n僅包含十六進制字元。 Log Type:\nSets whether to synchronize the output of the log window for performance. May have adverse effects on emulation. - 日誌類型:\n設定是否同步日誌窗口的輸出以提高性能。可能對模擬產生不良影響。 + 日誌記錄類型:\n設定是否同步日誌記錄視窗的輸出以提高效能。可能會對模擬產生負面影響。 Log Filter:\nFilters the log to only print specific information.\nExamples: "Core:Trace" "Lib.Pad:Debug Common.Filesystem:Error" "*:Critical"\nLevels: Trace, Debug, Info, Warning, Error, Critical - in this order, a specific level silences all levels preceding it in the list and logs every level after it. - 日誌過濾器:\n過濾日誌以僅打印特定信息。\n範例:"Core:Trace" "Lib.Pad:Debug Common.Filesystem:Error" "*:Critical" 等級: Trace, Debug, Info, Warning, Error, Critical - 以此順序,特定級別靜音所有前面的級別,並記錄其後的每個級別。 + 日誌記錄過濾器:\n過濾日誌記錄以僅列出特定資訊。 \n範例:{[="-=]}Core:Trace{[="-=]} {[="-=]}Lib.Pad:Debug Common.Filesystem:Error{[="-=]} {[="-=]}*:Critical{[="-=]}\n等級:Trace、Debug、Info、Warning、Error、Critical - 按照此順序,指定等級之後會不列出列表中等級低於其的所有資訊,並記錄列出等級高於其/同級的資訊。 Update:\nRelease: Official versions released every month that may be very outdated, but are more reliable and tested.\nNightly: Development versions that have all the latest features and fixes, but may contain bugs and are less stable. - 更新:\nRelease: 每月發布的官方版本,可能非常舊,但更可靠且經過測試。\nNightly: 開發版本,擁有所有最新的功能和修復,但可能包含錯誤,穩定性較差。 + 更新:\n正式版:每月發布的正式版本可能會過時,但更可靠而且有經過測試。 \n預覽版:具有所有最新功能和修復的開發版本,但可能含有一些錯誤而且不太穩定。 Background Image:\nControl the opacity of the game background image. - Background Image:\nControl the opacity of the game background image. + 背景圖像:\n控制遊戲背​​景圖像的能見度。 Play Title Music:\nIf a game supports it, enable playing special music when selecting the game in the GUI. - 播放標題音樂:\n如果遊戲支持,啟用在GUI中選擇遊戲時播放特殊音樂。 + 播放標題音樂:\n如果遊戲支援的話,則啟用在 GUI 中選取遊戲時播放特殊音樂。 Disable Trophy Pop-ups:\nDisable in-game trophy notifications. Trophy progress can still be tracked using the Trophy Viewer (right-click the game in the main window). - Disable Trophy Pop-ups:\nDisable in-game trophy notifications. Trophy progress can still be tracked using the Trophy Viewer (right-click the game in the main window). + 停用獎盃彈出視窗:\n停用遊戲內獎盃通知,仍然可以使用獎盃檢視器(在主視窗中右鍵單擊遊戲)追蹤獎盃進度。 Hide Cursor:\nChoose when the cursor will disappear:\nNever: You will always see the mouse.\nidle: Set a time for it to disappear after being idle.\nAlways: you will never see the mouse. - 隱藏游標:\n選擇游標何時消失:\n從不: 您將始終看到滑鼠。\n閒置: 設定在閒置後消失的時間。\n始終: 您將永遠看不到滑鼠。 + 隱藏滑鼠指標:\n選擇滑鼠指標何時消失:\n從不:你始終會看到滑鼠指標。 \n閒置:設定滑鼠指標空閒多久後消失的時間。 \n始終:你始終看不到滑鼠指標。 Hide Idle Cursor Timeout:\nThe duration (seconds) after which the cursor that has been idle hides itself. - 設定滑鼠在閒置後消失的時間。 + 空閒滑鼠指標隱藏逾時:\n閒置滑鼠指標隱藏自身之前的持續顯示時間(秒)。 Back Button Behavior:\nSets the controller's back button to emulate tapping the specified position on the PS4 touchpad. - 返回按鈕行為:\n設定控制器的返回按鈕模擬在 PS4 觸控板上指定位置的觸碰。 + 返回按鈕行為:\n設定控制器'的返回按鈕以模擬點擊 PS4 控制器觸控板上的指定位置。 Display Compatibility Data:\nDisplays game compatibility information in table view. Enable "Update Compatibility On Startup" to get up-to-date information. - Display Compatibility Data:\nDisplays game compatibility information in table view. Enable "Update Compatibility On Startup" to get up-to-date information. + 顯示相容性資料:\n在表格顯視模式中顯示遊戲相容性資訊。啟用「啟動"時更新相容性」以取得"最新資訊。 Update Compatibility On Startup:\nAutomatically update the compatibility database when shadPS4 starts. - Update Compatibility On Startup:\nAutomatically update the compatibility database when shadPS4 starts. + 啟動時更新相容性:\n在 shadPS4 啟動時自動更新相容性資料庫。 Update Compatibility Database:\nImmediately update the compatibility database. - Update Compatibility Database:\nImmediately update the compatibility database. + 更新相容性資料庫:\n立即更新相容性資料庫。 Never @@ -1832,250 +1832,250 @@ Graphics Device:\nOn multiple GPU systems, select the GPU the emulator will use from the drop down list,\nor select "Auto Select" to automatically determine it. - 圖形設備:\n在多GPU系統中,從下拉列表中選擇模擬器將使用的GPU,\n或選擇「自動選擇」以自動確定。 + 圖形裝置:\n在多GPU系統中,從下拉列表中選取模擬器將使用的GPU,\n或選取「自動選取」以自動選用適合的GPU。 Width/Height:\nSets the size of the emulator window at launch, which can be resized during gameplay.\nThis is different from the in-game resolution. - 寬度/高度:\n設定模擬器啟動時的窗口大小,可以在遊戲過程中調整。\n這與遊戲內解析度不同。 + 寬度/高度:\n設定模擬器啟動時的視窗大小,可以在遊戲過程中調整。\n這與遊戲內部解析度不同。 Vblank Divider:\nThe frame rate at which the emulator refreshes at is multiplied by this number. Changing this may have adverse effects, such as increasing the game speed, or breaking critical game functionality that does not expect this to change! - Vblank分隔符:\n模擬器的幀速率將乘以這個數字。更改此數字可能會有不良影響,例如增加遊戲速度,或破壞不預期此變化的關鍵遊戲功能! + Vblank分隔符:\n模擬器的畫格速率將乘以這個數字。變更此數字可能會有不良影響,例如增加遊戲速度,或可能會不似預期地破壞關鍵的遊戲功能! Enable Shaders Dumping:\nFor the sake of technical debugging, saves the games shaders to a folder as they render. - 啟用著色器轉儲:\n為了技術調試,將遊戲的著色器在渲染時保存到文件夾中。 + 啟用著色器傾印:\n作為技術偵錯用途,將遊戲的著色器在渲染時儲存到資料夾中。 Enable Null GPU:\nFor the sake of technical debugging, disables game rendering as if there were no graphics card. - 啟用空GPU:\n為了技術調試,禁用遊戲渲染,彷彿沒有顯示卡。 + 啟用空值GPU:\n作為技術偵錯用途,停用遊戲渲染,彷如沒有顯示卡。 Enable HDR:\nEnables HDR in games that support it.\nYour monitor must have support for the BT2020 PQ color space and the RGB10A2 swapchain format. - Enable HDR:\nEnables HDR in games that support it.\nYour monitor must have support for the BT2020 PQ color space and the RGB10A2 swapchain format. + 啟用 HDR:\n在支援 HDR 的遊戲中啟用 HDR。 \n您的顯示器必須支援 BT2020 PQ 色彩空間和 RGB10A2 交換鏈格式。 Game Folders:\nThe list of folders to check for installed games. - 遊戲資料夾:\n檢查已安裝遊戲的資料夾列表。 + 遊戲資料夾:\n檢查已安裝遊戲的資料夾列表。 Add:\nAdd a folder to the list. - 添加:\n將資料夾添加到列表。 + 新增:\n將資料夾新增到列表中。 Remove:\nRemove a folder from the list. - 移除:\n從列表中移除資料夾。 + 移除:\n從列表中移除資料夾。 Enable Debug Dumping:\nSaves the import and export symbols and file header information of the currently running PS4 program to a directory. - 啟用調試轉儲:\n將當前運行的PS4程序的輸入和輸出符號及文件頭信息保存到目錄中。 + 啟用偵錯傾印:\n將目前執行的PS4程式的輸入和輸出符號以及檔案頭資訊儲存到目錄中。 Enable Vulkan Validation Layers:\nEnables a system that validates the state of the Vulkan renderer and logs information about its internal state.\nThis will reduce performance and likely change the behavior of emulation. - 啟用Vulkan驗證層:\n啟用一個系統來驗證Vulkan渲染器的狀態並記錄其內部狀態的信息。這將降低性能並可能改變模擬行為。 + 啟用Vulkan驗證層:\n啟用一個系統來驗證Vulkan渲染器的狀態並記錄其內部狀態的資訊。這樣將會降低效能並可能改變模擬行為。 Enable Vulkan Synchronization Validation:\nEnables a system that validates the timing of Vulkan rendering tasks.\nThis will reduce performance and likely change the behavior of emulation. - 啟用Vulkan同步驗證:\n啟用一個系統來驗證Vulkan渲染任務的時間。這將降低性能並可能改變模擬行為。 + 啟用Vulkan同步驗證:\n啟用一個系統來驗證Vulkan渲染工作的時間。\n這樣將會降低效能並可能改變模擬行為。 Enable RenderDoc Debugging:\nIf enabled, the emulator will provide compatibility with Renderdoc to allow capture and analysis of the currently rendered frame. - 啟用RenderDoc調試:\n如果啟用,模擬器將提供與Renderdoc的兼容性,以允許捕獲和分析當前渲染的幀。 + 啟用RenderDoc偵錯:\n如果啟用的話,模擬器將會提供與Renderdoc的相容性,以便允許擷取和分析目前渲染的畫格。 Collect Shaders:\nYou need this enabled to edit shaders with the debug menu (Ctrl + F10). - Collect Shaders:\nYou need this enabled to edit shaders with the debug menu (Ctrl + F10). + 收集著色器:\n您需要啟用此功能才能使用偵錯功能表 (Ctrl + F10) 編輯著色器。 Crash Diagnostics:\nCreates a .yaml file with info about the Vulkan state at the time of crashing.\nUseful for debugging 'Device lost' errors. If you have this enabled, you should enable Host AND Guest Debug Markers.\nDoes not work on Intel GPUs.\nYou need Vulkan Validation Layers enabled and the Vulkan SDK for this to work. - Crash Diagnostics:\nCreates a .yaml file with info about the Vulkan state at the time of crashing.\nUseful for debugging 'Device lost' errors. If you have this enabled, you should enable Host AND Guest Debug Markers.\nDoes not work on Intel GPUs.\nYou need Vulkan Validation Layers enabled and the Vulkan SDK for this to work. + 當機診斷:\n會建立一個 .yaml 檔案,其中包含有關當機時 Vulkan 狀態的資訊。 \n對於偵錯「'裝置遺失」的'錯誤很有用。如果啟用了此功能,則應啟用主機和來賓偵錯標記。 \n不適用於 Intel GPU。 \n你需要啟用 Vulkan 驗證層和 Vulkan SDK 才能使此功能如常運作。 Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. - Copy GPU Buffers:\nGets around race conditions involving GPU submits.\nMay or may not help with PM4 type 0 crashes. + 複製 GPU 緩衝區:\n解決涉及 GPU 提交的競爭條件。 \n說不定能幫助解決 PM4 類型 0 的當機。 Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. - Host Debug Markers:\nInserts emulator-side information like markers for specific AMDGPU commands around Vulkan commands, as well as giving resources debug names.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + Host 偵錯標記:\n插入模擬器端資訊,例如圍繞 Vulkan 指令的特定 AMDGPU 指令的標記,以及提供資源偵錯名稱。 \n如果啟用此功能,則應啟用當機診斷。 \n對於 RenderDoc 等程式很有用。 Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. - Guest Debug Markers:\nInserts any debug markers the game itself has added to the command buffer.\nIf you have this enabled, you should enable Crash Diagnostics.\nUseful for programs like RenderDoc. + Guest 偵錯標記:\n插入遊戲本身已新增至指令緩衝區的任何偵錯標記。 \n如果啟用此功能,則應啟用當機診斷。 \n對於 RenderDoc 等程式很有用。 Save Data Path:\nThe folder where game save data will be saved. - Save Data Path:\nThe folder where game save data will be saved. + 遊戲存檔路徑:\n存放遊戲存檔資料的資料夾。 Browse:\nBrowse for a folder to set as the save data path. - Browse:\nBrowse for a folder to set as the save data path. + 瀏覽:\n選取要設定為存放遊戲存檔路徑的資料夾。 Release - Release + 正式版 Nightly - Nightly + 預覽版 Set the volume of the background music. - Set the volume of the background music. + 設定背景音樂的音量。 Enable Motion Controls - Enable Motion Controls + 啟用動態感應控制 Save Data Path - Save Data Path + 遊戲存檔路徑 Browse - Browse + 瀏覽 async - async + 異步 sync - sync + 同步 Auto Select - Auto Select + 自動選取 Directory to install games - Directory to install games + 要安裝遊戲的目錄 Directory to save data - Directory to save data + 遊戲存檔的目錄 Video - Video + 影像 Display Mode - Display Mode + 顯示模式 Windowed - Windowed + 視窗 Fullscreen - Fullscreen + 全螢幕 Fullscreen (Borderless) - Fullscreen (Borderless) + 全螢幕(無邊框) Window Size - Window Size + 視窗大小 W: - W: + 寬: H: - H: + 高: Separate Log Files - Separate Log Files + 單獨的日誌紀錄檔 Separate Log Files:\nWrites a separate logfile for each game. - Separate Log Files:\nWrites a separate logfile for each game. + 單獨的日誌紀錄檔:\n為個別遊戲寫入單獨的日誌記錄檔。 Trophy Notification Position - Trophy Notification Position + 獎盃通知位置 Left - Left + 左側 Right - Right + 右側 Top - Top + 頂部 Bottom - Bottom + 底部 Notification Duration - Notification Duration + 通知顯示持續時間 Portable User Folder - Portable User Folder + 可移植的使用者資料夾 Create Portable User Folder from Common User Folder - Create Portable User Folder from Common User Folder + 從通用使用者資料夾建立可移植的使用者資料夾 Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. - Portable user folder:\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it. + 可移植的使用者資料夾:\n儲存僅套用於目前資料夾中的 shadPS4 版本的 shadPS4 設定和資料。建立可移植的使用者資料夾後重新啟動應用程式以便開始使用它。 Cannot create portable user folder - Cannot create portable user folder + 無法建立可移植的使用者資料夾 %1 already exists - %1 already exists + %1 已存在 Portable user folder created - Portable user folder created + 已建立可移植的使用者資料夾 %1 successfully created. - %1 successfully created. + 已成功建立 %1。 Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. - Open the custom trophy images/sounds folder:\nYou can add custom images to the trophies and an audio.\nAdd the files to custom_trophy with the following names:\ntrophy.wav OR trophy.mp3, bronze.png, gold.png, platinum.png, silver.png\nNote: The sound will only work in QT versions. + 開啟自訂獎盃影像/聲音資料夾:\n您可以將自訂影像新增至獎盃和音訊。 \n將檔案加入 custom_tropy,名稱如下:\ntropy.wav OR trophy.mp3、bronze.png、gold.png、platinum.png、silver.png\n注意:聲音僅在 QT 版本中有效。 TrophyViewer Trophy Viewer - Trophy Viewer + 獎盃檢視器 Select Game: - Select Game: + 選取遊戲: Progress - Progress + 進度 Show Earned Trophies - Show Earned Trophies + 顯示已獲得的獎盃 Show Not Earned Trophies - Show Not Earned Trophies + 顯示未獲得的獎盃 Show Hidden Trophies - Show Hidden Trophies + 顯示隱藏的獎盃 From cd8e2c4e7974c99a035acb8bac2b3114737f8610 Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Mon, 14 Apr 2025 12:37:06 +0300 Subject: [PATCH 26/27] hotfix: fix libpng issues under linux --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ea8688df..6412e51fb 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,7 +213,7 @@ find_package(fmt 10.2.0 CONFIG) find_package(glslang 15 CONFIG) find_package(half 1.12.0 MODULE) find_package(magic_enum 0.9.7 CONFIG) -find_package(PNG 1.6 MODULE) +find_package(PNG 1.6.47 MODULE) find_package(RenderDoc 1.6.0 MODULE) find_package(SDL3 3.1.2 CONFIG) find_package(stb MODULE) From 2b633fd3c566fbabf5a63fd2e14a049e28bab3ef Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Mon, 14 Apr 2025 14:08:39 +0300 Subject: [PATCH 27/27] downgrade libpng to fix an issue with linux-qt (#2784) * downgrade libpng * revert cmake change --- CMakeLists.txt | 2 +- externals/libpng | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6412e51fb..0ea8688df 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,7 +213,7 @@ find_package(fmt 10.2.0 CONFIG) find_package(glslang 15 CONFIG) find_package(half 1.12.0 MODULE) find_package(magic_enum 0.9.7 CONFIG) -find_package(PNG 1.6.47 MODULE) +find_package(PNG 1.6 MODULE) find_package(RenderDoc 1.6.0 MODULE) find_package(SDL3 3.1.2 CONFIG) find_package(stb MODULE) diff --git a/externals/libpng b/externals/libpng index 34005e3d3..c1cc0f3f4 160000 --- a/externals/libpng +++ b/externals/libpng @@ -1 +1 @@ -Subproject commit 34005e3d3d373c0c36898cc55eae48a79c8238a1 +Subproject commit c1cc0f3f4c3d4abd11ca68c59446a29ff6f95003