summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.ci/templates/build-msvc.yml2
-rw-r--r--CMakeLists.txt6
-rw-r--r--dist/languages/ca.ts875
-rw-r--r--dist/languages/cs.ts839
-rw-r--r--dist/languages/da.ts837
-rw-r--r--dist/languages/de.ts839
-rw-r--r--dist/languages/es.ts839
-rw-r--r--dist/languages/fi.ts837
-rw-r--r--dist/languages/fr.ts841
-rw-r--r--dist/languages/id.ts883
-rw-r--r--dist/languages/it.ts839
-rw-r--r--dist/languages/ja_JP.ts997
-rw-r--r--dist/languages/ko_KR.ts847
-rw-r--r--dist/languages/nb.ts837
-rw-r--r--dist/languages/nl.ts837
-rw-r--r--dist/languages/pl.ts961
-rw-r--r--dist/languages/pt_BR.ts847
-rw-r--r--dist/languages/pt_PT.ts1306
-rw-r--r--dist/languages/ru_RU.ts839
-rw-r--r--dist/languages/sv.ts837
-rw-r--r--dist/languages/tr_TR.ts839
-rw-r--r--dist/languages/vi.ts6202
-rw-r--r--dist/languages/vi_VN.ts841
-rw-r--r--dist/languages/zh_CN.ts839
-rw-r--r--dist/languages/zh_TW.ts843
m---------externals/dynarmic0
-rw-r--r--externals/ffmpeg/CMakeLists.txt2
-rw-r--r--src/audio_core/common.h4
-rw-r--r--src/common/bit_util.h7
-rw-r--r--src/common/common_types.h10
-rw-r--r--src/common/fs/fs_util.cpp8
-rw-r--r--src/common/fs/fs_util.h18
-rw-r--r--src/common/host_memory.cpp4
-rw-r--r--src/common/intrusive_red_black_tree.h391
-rw-r--r--src/common/logging/backend.cpp18
-rw-r--r--src/common/logging/filter.cpp1
-rw-r--r--src/common/logging/types.h1
-rw-r--r--src/common/page_table.cpp58
-rw-r--r--src/common/page_table.h24
-rw-r--r--src/common/settings.cpp2
-rw-r--r--src/common/settings.h4
-rw-r--r--src/common/telemetry.cpp60
-rw-r--r--src/common/telemetry.h36
-rw-r--r--src/common/tree.h625
-rw-r--r--src/common/uuid.cpp208
-rw-r--r--src/common/uuid.h166
-rw-r--r--src/common/x64/cpu_detect.cpp124
-rw-r--r--src/common/x64/cpu_detect.h79
-rw-r--r--src/core/CMakeLists.txt12
-rw-r--r--src/core/arm/arm_interface.h6
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp16
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp17
-rw-r--r--src/core/arm/dynarmic/arm_exclusive_monitor.cpp4
-rw-r--r--src/core/arm/dynarmic/arm_exclusive_monitor.h2
-rw-r--r--src/core/arm/exclusive_monitor.h2
-rw-r--r--src/core/core.cpp15
-rw-r--r--src/core/device_memory.cpp5
-rw-r--r--src/core/device_memory.h4
-rw-r--r--src/core/file_sys/patch_manager.cpp18
-rw-r--r--src/core/file_sys/vfs.h18
-rw-r--r--src/core/frontend/applets/mii.cpp19
-rw-r--r--src/core/frontend/applets/mii.h35
-rw-r--r--src/core/frontend/applets/profile_select.cpp3
-rw-r--r--src/core/frontend/emu_window.h11
-rw-r--r--src/core/hid/emulated_console.h1
-rw-r--r--src/core/hid/emulated_controller.cpp17
-rw-r--r--src/core/hid/emulated_controller.h13
-rw-r--r--src/core/hid/hid_core.h1
-rw-r--r--src/core/hid/input_converter.cpp2
-rw-r--r--src/core/hle/ipc_helpers.h10
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_memory_layout.h13
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp36
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.h1
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp5
-rw-r--r--src/core/hle/kernel/hle_ipc.h9
-rw-r--r--src/core/hle/kernel/init/init_slab_setup.cpp101
-rw-r--r--src/core/hle/kernel/init/init_slab_setup.h5
-rw-r--r--src/core/hle/kernel/initial_process.h23
-rw-r--r--src/core/hle/kernel/k_address_arbiter.cpp10
-rw-r--r--src/core/hle/kernel/k_auto_object.h7
-rw-r--r--src/core/hle/kernel/k_auto_object_container.h4
-rw-r--r--src/core/hle/kernel/k_code_memory.cpp6
-rw-r--r--src/core/hle/kernel/k_condition_variable.cpp2
-rw-r--r--src/core/hle/kernel/k_event.cpp14
-rw-r--r--src/core/hle/kernel/k_event.h2
-rw-r--r--src/core/hle/kernel/k_handle_table.cpp8
-rw-r--r--src/core/hle/kernel/k_handle_table.h37
-rw-r--r--src/core/hle/kernel/k_memory_layout.h10
-rw-r--r--src/core/hle/kernel/k_memory_manager.cpp469
-rw-r--r--src/core/hle/kernel/k_memory_manager.h203
-rw-r--r--src/core/hle/kernel/k_memory_region.h80
-rw-r--r--src/core/hle/kernel/k_memory_region_type.h10
-rw-r--r--src/core/hle/kernel/k_page_buffer.cpp19
-rw-r--r--src/core/hle/kernel/k_page_buffer.h29
-rw-r--r--src/core/hle/kernel/k_page_heap.cpp126
-rw-r--r--src/core/hle/kernel/k_page_heap.h261
-rw-r--r--src/core/hle/kernel/k_page_table.cpp938
-rw-r--r--src/core/hle/kernel/k_page_table.h54
-rw-r--r--src/core/hle/kernel/k_port.cpp7
-rw-r--r--src/core/hle/kernel/k_process.cpp205
-rw-r--r--src/core/hle/kernel/k_process.h20
-rw-r--r--src/core/hle/kernel/k_resource_limit.cpp19
-rw-r--r--src/core/hle/kernel/k_resource_limit.h3
-rw-r--r--src/core/hle/kernel/k_server_port.h8
-rw-r--r--src/core/hle/kernel/k_server_session.cpp15
-rw-r--r--src/core/hle/kernel/k_slab_heap.h231
-rw-r--r--src/core/hle/kernel/k_thread.cpp7
-rw-r--r--src/core/hle/kernel/k_thread.h6
-rw-r--r--src/core/hle/kernel/k_thread_local_page.cpp66
-rw-r--r--src/core/hle/kernel/k_thread_local_page.h112
-rw-r--r--src/core/hle/kernel/kernel.cpp198
-rw-r--r--src/core/hle/kernel/kernel.h26
-rw-r--r--src/core/hle/kernel/service_thread.cpp5
-rw-r--r--src/core/hle/kernel/slab_helpers.h2
-rw-r--r--src/core/hle/kernel/svc.cpp176
-rw-r--r--src/core/hle/kernel/svc_types.h2
-rw-r--r--src/core/hle/kernel/svc_wrap.h22
-rw-r--r--src/core/hle/service/acc/acc.cpp42
-rw-r--r--src/core/hle/service/acc/profile_manager.cpp19
-rw-r--r--src/core/hle/service/acc/profile_manager.h6
-rw-r--r--src/core/hle/service/am/am.cpp16
-rw-r--r--src/core/hle/service/am/am.h36
-rw-r--r--src/core/hle/service/am/applets/applet_mii.cpp101
-rw-r--r--src/core/hle/service/am/applets/applet_mii.h90
-rw-r--r--src/core/hle/service/am/applets/applet_profile_select.cpp4
-rw-r--r--src/core/hle/service/am/applets/applet_profile_select.h2
-rw-r--r--src/core/hle/service/am/applets/applets.cpp17
-rw-r--r--src/core/hle/service/am/applets/applets.h9
-rw-r--r--src/core/hle/service/apm/apm_controller.cpp10
-rw-r--r--src/core/hle/service/apm/apm_controller.h15
-rw-r--r--src/core/hle/service/friend/friend.cpp6
-rw-r--r--src/core/hle/service/hid/hid.cpp12
-rw-r--r--src/core/hle/service/hid/hid.h1
-rw-r--r--src/core/hle/service/kernel_helpers.cpp8
-rw-r--r--src/core/hle/service/ldr/ldr.cpp78
-rw-r--r--src/core/hle/service/mii/mii_manager.cpp12
-rw-r--r--src/core/hle/service/mii/mii_manager.h4
-rw-r--r--src/core/hle/service/mnpp/mnpp_app.cpp45
-rw-r--r--src/core/hle/service/mnpp/mnpp_app.h20
-rw-r--r--src/core/hle/service/nfp/nfp.cpp916
-rw-r--r--src/core/hle/service/nfp/nfp.h242
-rw-r--r--src/core/hle/service/ns/pdm_qry.cpp2
-rw-r--r--src/core/hle/service/pm/pm.cpp45
-rw-r--r--src/core/hle/service/service.cpp2
-rw-r--r--src/core/hle/service/sm/sm.cpp2
-rw-r--r--src/core/hle/service/sockets/bsd.cpp4
-rw-r--r--src/core/hle/service/time/clock_types.h2
-rw-r--r--src/core/hle/service/time/steady_clock_core.h2
-rw-r--r--src/core/hle/service/time/time_manager.cpp2
-rw-r--r--src/core/hle/service/vi/display/vi_display.h2
-rw-r--r--src/core/loader/loader.h6
-rw-r--r--src/core/memory.cpp3
-rw-r--r--src/input_common/drivers/gc_adapter.cpp2
-rw-r--r--src/input_common/drivers/keyboard.cpp6
-rw-r--r--src/input_common/drivers/mouse.cpp2
-rw-r--r--src/input_common/drivers/sdl_driver.cpp28
-rw-r--r--src/input_common/drivers/touch_screen.cpp2
-rw-r--r--src/input_common/drivers/udp_client.cpp18
-rw-r--r--src/input_common/drivers/udp_client.h4
-rw-r--r--src/input_common/helpers/stick_from_buttons.cpp30
-rw-r--r--src/input_common/helpers/touch_from_buttons.cpp1
-rw-r--r--src/input_common/input_engine.cpp18
-rw-r--r--src/input_common/input_engine.h22
-rw-r--r--src/input_common/input_mapping.cpp6
-rw-r--r--src/input_common/input_poller.cpp4
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_instructions.h31
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp107
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp142
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_instructions.h31
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv.h2
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp119
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp59
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_instructions.h30
-rw-r--r--src/shader_recompiler/backend/spirv/spirv_emit_context.cpp59
-rw-r--r--src/shader_recompiler/backend/spirv/spirv_emit_context.h8
-rw-r--r--src/shader_recompiler/frontend/ir/microinstruction.cpp19
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc19
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/load_constant.cpp14
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input.cpp580
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input_lut3.py92
-rw-r--r--src/shader_recompiler/frontend/maxwell/translate_program.cpp4
-rw-r--r--src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp104
-rw-r--r--src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp52
-rw-r--r--src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp20
-rw-r--r--src/shader_recompiler/ir_opt/rescaling_pass.cpp29
-rw-r--r--src/shader_recompiler/shader_info.h2
-rw-r--r--src/video_core/engines/maxwell_3d.cpp109
-rw-r--r--src/video_core/engines/maxwell_3d.h50
-rw-r--r--src/video_core/engines/maxwell_dma.cpp20
-rw-r--r--src/video_core/engines/maxwell_dma.h2
-rw-r--r--src/video_core/fence_manager.h2
-rw-r--r--src/video_core/host_shaders/CMakeLists.txt1
-rw-r--r--src/video_core/host_shaders/convert_s8d24_to_abgr8.frag23
-rw-r--r--src/video_core/query_cache.h1
-rw-r--r--src/video_core/renderer_base.h8
-rw-r--r--src/video_core/renderer_opengl/gl_fence_manager.cpp3
-rw-r--r--src/video_core/renderer_opengl/gl_graphics_pipeline.cpp46
-rw-r--r--src/video_core/renderer_opengl/gl_graphics_pipeline.h7
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.h50
-rw-r--r--src/video_core/renderer_opengl/gl_state_tracker.h1
-rw-r--r--src/video_core/renderer_opengl/maxwell_to_gl.h2
-rw-r--r--src/video_core/renderer_vulkan/blit_image.cpp9
-rw-r--r--src/video_core/renderer_vulkan/blit_image.h4
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_blit_screen.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_compute_pass.cpp3
-rw-r--r--src/video_core/renderer_vulkan/vk_scheduler.cpp6
-rw-r--r--src/video_core/renderer_vulkan/vk_scheduler.h4
-rw-r--r--src/video_core/renderer_vulkan/vk_state_tracker.h1
-rw-r--r--src/video_core/renderer_vulkan/vk_texture_cache.cpp9
-rw-r--r--src/video_core/video_core.cpp1
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp37
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h5
-rw-r--r--src/yuzu/applets/qt_controller.cpp2
-rw-r--r--src/yuzu/applets/qt_profile_select.cpp4
-rw-r--r--src/yuzu/configuration/config.cpp20
-rw-r--r--src/yuzu/configuration/config.h2
-rw-r--r--src/yuzu/configuration/configure_cpu.cpp9
-rw-r--r--src/yuzu/configuration/configure_cpu.h1
-rw-r--r--src/yuzu/configuration/configure_cpu.ui12
-rw-r--r--src/yuzu/configuration/configure_cpu_debug.cpp8
-rw-r--r--src/yuzu/configuration/configure_cpu_debug.ui29
-rw-r--r--src/yuzu/configuration/configure_general.cpp11
-rw-r--r--src/yuzu/configuration/configure_general.h1
-rw-r--r--src/yuzu/configuration/configure_general.ui14
-rw-r--r--src/yuzu/configuration/configure_input.cpp2
-rw-r--r--src/yuzu/configuration/configure_input_player.cpp29
-rw-r--r--src/yuzu/configuration/configure_input_player_widget.cpp89
-rw-r--r--src/yuzu/configuration/configure_input_player_widget.h2
-rw-r--r--src/yuzu/configuration/configure_profile_manager.cpp10
-rw-r--r--src/yuzu/configuration/configure_touch_from_button.cpp3
-rw-r--r--src/yuzu/configuration/configure_vibration.cpp74
-rw-r--r--src/yuzu/configuration/configure_vibration.h18
-rw-r--r--src/yuzu/configuration/configure_vibration.ui7
-rw-r--r--src/yuzu/debugger/console.cpp1
-rw-r--r--src/yuzu/main.cpp176
-rw-r--r--src/yuzu/main.h4
-rw-r--r--src/yuzu/main.ui2
-rw-r--r--src/yuzu/uisettings.h1
-rw-r--r--src/yuzu_cmd/config.cpp50
-rw-r--r--src/yuzu_cmd/config.h5
-rw-r--r--src/yuzu_cmd/default_ini.h19
-rw-r--r--src/yuzu_cmd/yuzu.cpp22
243 files changed, 22971 insertions, 12715 deletions
diff --git a/.ci/templates/build-msvc.yml b/.ci/templates/build-msvc.yml
index f6e7557b2..e5f8ea91e 100644
--- a/.ci/templates/build-msvc.yml
+++ b/.ci/templates/build-msvc.yml
@@ -8,7 +8,7 @@ steps:
displayName: 'Install vulkan-sdk'
- script: python -m pip install --upgrade pip conan
displayName: 'Install conan'
-- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release .. && cd ..
+- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release .. && cd ..
displayName: 'Configure CMake'
- task: MSBuild@1
displayName: 'Build'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4bf55d664..11a459813 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -363,7 +363,11 @@ if(ENABLE_QT)
set(YUZU_QT_NO_CMAKE_SYSTEM_PATH "NO_CMAKE_SYSTEM_PATH")
endif()
- find_package(Qt5 ${QT_VERSION} REQUIRED COMPONENTS Widgets ${QT_PREFIX_HINT} ${YUZU_QT_NO_CMAKE_SYSTEM_PATH})
+ if ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND YUZU_USE_BUNDLED_QT)
+ find_package(Qt5 ${QT_VERSION} REQUIRED COMPONENTS Widgets DBus ${QT_PREFIX_HINT} ${YUZU_QT_NO_CMAKE_SYSTEM_PATH})
+ else()
+ find_package(Qt5 ${QT_VERSION} REQUIRED COMPONENTS Widgets ${QT_PREFIX_HINT} ${YUZU_QT_NO_CMAKE_SYSTEM_PATH})
+ endif()
if (YUZU_USE_QT_WEB_ENGINE)
find_package(Qt5 COMPONENTS WebEngineCore WebEngineWidgets)
endif()
diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts
index 5d006ffb4..76b897b1c 100644
--- a/dist/languages/ca.ts
+++ b/dist/languages/ca.ts
@@ -62,22 +62,22 @@ p, li {white-space: pre-wrap; }
<translation>Cancel·la</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Premi la cantonada superior esquerra&lt;br&gt;del seu panell tàctil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Ara premi la cantonada inferior dreta &lt;br&gt;del seu panell tàctil. </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configuració completada!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>D&apos;acord</translation>
</message>
@@ -553,7 +553,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="46"/>
<source>When checked, the max size of the log increases from 100 MB to 1 GB</source>
- <translation>Quan es marca, la mida màxima del registre augmenta de 100 MB a 1 GB </translation>
+ <translation>Quan està marcat, la mida màxima del registre augmenta de 100 MB a 1 GB </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="49"/>
@@ -598,12 +598,12 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="114"/>
<source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
- <translation type="unfinished"/>
+ <translation>Quan està marcat, bolcarà tots els shaders d&apos;assemblador originals del cache de shaders del disc o del joc mentre els troba</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="117"/>
<source>Dump Game Shaders</source>
- <translation type="unfinished"/>
+ <translation>Bolcar shaders del joc</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="127"/>
@@ -900,49 +900,49 @@ p, li {white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Reiniciar cache de metadades</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Seleccioni el directori de NAND emulat...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Seleccioni el directori de SD emulat...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Seleccioni la ruta del cartutx de joc...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Seleccioni el directori de bolcat...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Seleccioni el directori de càrrega de mods...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>El cache de metadades ja està buit.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>L&apos;operació s&apos;ha completat correctament.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>El cache de metadades no s&apos;ha pogut eliminar. Pot ser que es trobi en ús actualment o ja hagi sigut eliminat.</translation>
</message>
@@ -1003,36 +1003,46 @@ p, li {white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Confirmar la sortida mentre s&apos;està executant l&apos;emulació</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Sol·licitar l&apos;usuari en l&apos;arrencada del joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausa l&apos;emulació quan la finestra està en segon pla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Ocultar el cursor del ratolí en cas d&apos;inactivitat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Reiniciar tots els paràmetres</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Això restablirà tota la configuració i eliminarà totes les configuracions dels jocs. No eliminarà ni els directoris de jocs, ni els perfils, ni els perfils dels controladors. Procedir?</translation>
</message>
@@ -1227,7 +1237,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="432"/>
<source>AMD FidelityFX™️ Super Resolution (Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>AMD FidelityFX™️ Super Resolution (només Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="458"/>
@@ -1394,7 +1404,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
<source>Controller Hotkey</source>
- <translation type="unfinished"/>
+ <translation>Tecla d&apos;accés ràpid del controlador</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="124"/>
@@ -1412,7 +1422,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="144"/>
<source>Home+%1</source>
- <translation type="unfinished"/>
+ <translation>Inici+%1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="158"/>
@@ -1420,89 +1430,9 @@ p, li {white-space: pre-wrap; }
<translation>[esperant]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Menys</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Més</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
- <translation type="unfinished"/>
+ <translation>Invàlid</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="329"/>
@@ -1517,12 +1447,12 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="351"/>
<source>Conflicting Button Sequence</source>
- <translation type="unfinished"/>
+ <translation>Seqüència de botons en conflicte</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="352"/>
<source>The default button sequence is already assigned to: %1</source>
- <translation type="unfinished"/>
+ <translation>La seqüència de botons per defecte ja està assignada a: %1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="366"/>
@@ -1847,7 +1777,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
<source>Controller navigation</source>
- <translation type="unfinished"/>
+ <translation>Navegació del controlador</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
@@ -1909,7 +1839,7 @@ p, li {white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Palanca esquerra</translation>
</message>
@@ -2003,14 +1933,14 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2029,7 +1959,7 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Més</translation>
</message>
@@ -2042,15 +1972,15 @@ p, li {white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2107,225 +2037,230 @@ p, li {white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Palanca dreta</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Esborrar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[no establert]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Botó commutador</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Botó d&apos;inversió</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Invertir eixos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Configurar llindar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Esculli un valor entre 0% i 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>Configurar llindar giroscopi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Configuració de palanca analògica</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Després de prémer D&apos;acord, primer moveu el joystick horitzontalment i després verticalment.
Per invertir els eixos, primer moveu el joystick verticalment i després horitzontalment.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Zona morta: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Rang del modificador: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Controlador Pro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joycons duals</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon esquerra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon dret</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Portàtil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Controlador de GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Controlador NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Controlador SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Controlador N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Inici / Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Palanca de control</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Sacseja!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[esperant]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nou perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Introdueixi un nom de perfil:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Crear perfil d&apos;entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>El nom de perfil introduït no és vàlid!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Error al crear el perfil d&apos;entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Eliminar perfil d&apos;entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Error al eliminar el perfil d&apos;entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Carregar perfil d&apos;entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Error al carregar el perfil d&apos;entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Guardar perfil d&apos;entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Error al guardar el perfil d&apos;entrada &quot;%1&quot;</translation>
</message>
@@ -2373,7 +2308,7 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configuració</translation>
</message>
@@ -2409,7 +2344,7 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Provar</translation>
</message>
@@ -2424,82 +2359,82 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo
<translation>Eliminar servidor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Més Informació&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>El número de port té caràcters invàlids</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>El port ha d&apos;estar entre el rang 0 i 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>l&apos;Adreça IP no és vàlida</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Aquest servidor UDP ja existeix</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>No és possible afegir més de 8 servidors</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Provant</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configurant</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Prova exitosa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>S&apos;han rebut dades des del servidor correctament.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Prova fallida</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>No s&apos;han pogut rebre dades vàlides des del servidor.&lt;br&gt;Si us plau, verifiqui que el servidor està configurat correctament i que la direcció i el port són correctes. </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>La prova del UDP o la configuració de la calibració està en curs.&lt;br&gt;Si us plau, esperi a que acabi el procés.</translation>
</message>
@@ -3411,7 +3346,7 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les
<translation>Nou nom:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[pressioni una tecla]</translation>
</message>
@@ -3626,68 +3561,73 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibració</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Jugador 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Jugador 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Jugador 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Jugador 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Jugador 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Jugador 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Jugador 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Jugador 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Paràmetres</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Activar vibració precisa</translation>
</message>
@@ -3895,440 +3835,430 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les
<translation>Temps que costa emular un fotograma de la Switch, sense tenir en compte la limitació de fotogrames o la sincronització vertical. Per a una emulació òptima, aquest valor hauria de ser com a màxim de 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Configuració invàlida detectada</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>El controlador del mode portàtil no es pot fer servir en el mode acoblat. Es seleccionarà el controlador Pro en el seu lloc.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>ACOBLAT</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Esborrar arxius recents</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
- <translation type="unfinished"/>
+ <translation>yuzu està executant un joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Advertència format del joc desfasat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Està utilitzant el format de directori de ROM deconstruït per a aquest joc, que és un format desactualitzat que ha sigut reemplaçat per altres, com NCA, NAX, XCI o NSP. Els directoris de ROM deconstruïts careixen d&apos;icones, metadades i suport d&apos;actualitzacions.&lt;br&gt;&lt;br&gt;Per a obtenir una explicació dels diversos formats de Switch que suporta yuzu,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;faci una ullada a la nostra wiki&lt;/a&gt;. Aquest missatge no es tornarà a mostrar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Error carregant la ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>El format de la ROM no està suportat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>S&apos;ha produït un error inicialitzant el nucli de vídeo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu ha trobat un error mentre executava el nucli de vídeo. Això sol ser causat per controladors de la GPU obsolets, inclosos els integrats. Si us plau, consulti el registre per a més detalls. Per obtenir més informació sobre com accedir al registre, consulti la següent pàgina: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Com carregar el fitxer de registre&lt;/a&gt;. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Error al carregar la ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Si us plau, segueixi &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guia d&apos;inici de yuzu&lt;/a&gt; per a bolcar de nou els seus fitxers.&lt;br&gt;Pot consultar la wiki de yuzu wiki&lt;/a&gt; o el Discord de yuzu&lt;/a&gt; per obtenir ajuda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>S&apos;ha produït un error desconegut. Si us plau, consulti el registre per a més detalls.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Dades de partides guardades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Dades de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Error obrint la carpeta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>La carpeta no existeix!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Error obrint la cache transferible de shaders</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>No s&apos;ha pogut crear el directori de la cache dels shaders per aquest títol.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Continguts</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Actualització</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Eliminar entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Eliminar el joc instal·lat %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>S&apos;ha eliminat correctament</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>S&apos;ha eliminat correctament el joc base instal·lat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Error eliminant %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>El joc base no està instal·lat a la NAND i no pot ser eliminat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>S&apos;ha eliminat correctament l&apos;actualització instal·lada.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>No hi ha cap actualització instal·lada per aquest títol.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>No hi ha cap DLC instal·lat per aquest títol.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>S&apos;ha eliminat correctament %1 DLC instal·lat/s.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Desitja eliminar la cache transferible de shaders d&apos;OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Desitja eliminar la cache transferible de shaders de Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Desitja eliminar totes les caches transferibles de shaders?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Desitja eliminar la configuració personalitzada del joc?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Eliminar arxiu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Error eliminant la cache transferible de shaders</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>No existeix una cache de shaders per aquest títol.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>S&apos;ha eliminat correctament la cache transferible de shaders.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>No s&apos;ha pogut eliminar la cache transferible de shaders.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Error al eliminar les caches de shaders transferibles</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Caches de shaders transferibles eliminades correctament.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>No s&apos;ha pogut eliminar el directori de caches de shaders transferibles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Error eliminant la configuració personalitzada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>No existeix una configuració personalitzada per aquest joc.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>S&apos;ha eliminat correctament la configuració personalitzada del joc.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>No s&apos;ha pogut eliminar la configuració personalitzada del joc.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>La extracció de RomFS ha fallat!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>S&apos;ha produït un error copiant els arxius RomFS o l&apos;usuari ha cancel·lat la operació.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Esquelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Seleccioni el mode de bolcat de RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Si us plau, seleccioni la forma en que desitja bolcar la RomFS.&lt;br&gt;Completa copiarà tots els arxius al nou directori mentre que&lt;br&gt;esquelet només crearà l&apos;estructura de directoris.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>No hi ha suficient espai lliure a %1 per extreure el RomFS. Si us plau, alliberi espai o esculli un altre directori de bolcat a Emulació &gt; Configuració &gt; Sistema &gt; Sistema d&apos;arxius &gt; Carpeta arrel de bolcat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extraient RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Cancel·la</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extracció de RomFS completada correctament!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>L&apos;operació s&apos;ha completat correctament.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Error obrint %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Seleccionar directori</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Propietats</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Les propietats del joc no s&apos;han pogut carregar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Executable de Switch (%1);;Tots els Arxius (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Carregar arxiu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Obrir el directori de la ROM extreta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Directori seleccionat invàlid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>El directori que ha seleccionat no conté un arxiu &apos;main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Arxiu de Switch Instal·lable (*.nca *.nsp *.xci);;Arxiu de Continguts Nintendo (*.nca);;Paquet d&apos;enviament Nintendo (*.nsp);;Imatge de Cartutx NX (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Instal·lar arxius</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n arxiu(s) restants</numerusform><numerusform>%n arxiu(s) restants</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instal·lant arxiu &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Resultats instal·lació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Per evitar possibles conflictes, no recomanem als usuaris que instal·lin jocs base a la NAND.
Si us plau, utilitzi aquesta funció només per a instal·lar actualitzacions i DLCs.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n nou(s) arxiu(s) s&apos;ha(n) instal·lat
@@ -4336,7 +4266,7 @@ Si us plau, utilitzi aquesta funció només per a instal·lar actualitzacions i
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n arxiu(s) s&apos;han sobreescrit
@@ -4344,7 +4274,7 @@ Si us plau, utilitzi aquesta funció només per a instal·lar actualitzacions i
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n arxiu(s) no s&apos;han instal·lat
@@ -4352,367 +4282,401 @@ Si us plau, utilitzi aquesta funció només per a instal·lar actualitzacions i
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplicació del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Arxiu del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Actualització de l&apos;aplicació del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Paquet de firmware (Tipus A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Paquet de firmware (Tipus B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Actualització de joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC del joc</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Títol delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Seleccioni el tipus d&apos;instal·lació NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Seleccioni el tipus de títol que desitja instal·lar aquest NCA com a:
(En la majoria dels casos, el valor predeterminat &apos;Joc&apos; està bé.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Ha fallat la instal·lació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>El tipus de títol seleccionat per el NCA és invàlid.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Arxiu no trobat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Arxiu &quot;%1&quot; no trobat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>D&apos;acord</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Falta el compte de yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Per tal d&apos;enviar un cas de prova de compatibilitat de joc, ha de vincular el seu compte de yuzu.&lt;br&gt;&lt;br/&gt;Per a vincular el seu compte de yuzu, vagi a Emulació &amp; gt; Configuració &amp; gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Error obrint URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>No es pot obrir la URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Gravació TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Sobreescriure l&apos;arxiu del jugador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Configuració invàlida detectada</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>El controlador del mode portàtil no es pot fer servir en el mode acoblat. Es seleccionarà el controlador Pro en el seu lloc.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arxiu Amiibo (%1);; Tots els Arxius (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Error obrint l&apos;arxiu de dades d&apos;Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>No s&apos;ha pogut obrir l&apos;arxiu de dades d&apos;Amiibo &quot;%1&quot; per a lectura.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Error llegint l&apos;arxiu de dades d&apos;Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>No s&apos;han pogut llegir completament les dades d&apos;Amiibo. S&apos;esperava llegir %1 bytes, però només s&apos;han pogut llegir %2 bytes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Error al carregar les dades d&apos;Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>No s&apos;han pogut carregar les dades d&apos;Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Imatge PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Estat TAS: executant %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Estat TAS: gravant %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Estat TAS: inactiu %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Estat TAS: invàlid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar l&apos;execució</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Parar g&amp;ravació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>G&amp;ravar</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Construint: %n shader(s)</numerusform><numerusform>Construint: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Escala: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Velocitat: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Velocitat: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Joc: %1 FPS (desbloquejat)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Joc: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Fotograma: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU ALTA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREMA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>ERROR GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>MÉS PROPER</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICÚBIC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIÀ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>SENSE AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>El joc que està intentant carregar requereix d&apos;arxius addicionals de la seva Switch abans de poder jugar. &lt;br/&gt;&lt;br/&gt;Per a obtenir més informació sobre com bolcar aquests arxius, vagi a la següent pàgina de la wiki: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Bolcar arxius del sistema i les fonts compartides des d&apos;una Consola Switch&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Desitja tornar a la llista de jocs? Continuar amb l&apos;emulació pot provocar el tancament inesperat, dades de partides guardades corruptes o altres errors.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu no ha pogut localitzar l&apos;arxiu de sistema de la Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu no ha pogut localitzar un arxiu de sistema de la Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Arxiu del sistema no trobat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Falta arxiu del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu no ha pogut trobar les fonts compartides de la Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Fonts compartides no trobades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Falten les fonts compartides</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Error fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu ha trobat un error fatal, consulti el registre per a obtenir més detalls. Per a més informació sobre com accedir al registre, consulti la següent pàgina: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Com carregar l&apos;arxiu de registre?&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt; Desitja tornar al llistat de jocs? Continuar amb l&apos;emulació pot provocar el tancament inesperat, dades de partides guardades corruptes o altres errors.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Trobat error fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmi la clau de rederivació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4729,37 +4693,37 @@ i opcionalment faci còpies de seguretat.
Això eliminarà els arxius de les claus generats automàticament i tornarà a executar el mòdul de derivació de claus.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Falten fusibles</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - Falta BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Falta BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - Falta PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Falten components de derivació</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Falten les claus d&apos;encriptació. &lt;br&gt;Si us plau, segueixi &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guia ràpida de yuzu&lt;/a&gt; per a obtenir totes les seves claus, firmware i jocs.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4768,39 +4732,39 @@ Això pot prendre fins a un minut depenent
del rendiment del seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Derivant claus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Seleccioni el destinatari per a bolcar el RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Si us plau, seleccioni quin RomFS desitja bolcar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Està segur de que vol tancar yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Està segur de que vol aturar l&apos;emulació? Qualsevol progrés no guardat es perdrà.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5346,8 +5310,8 @@ d&apos;inici.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Carregar &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5449,15 +5413,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>INICI/PAUSAR</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Carregant</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5506,8 +5465,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[no establert]</translation>
</message>
@@ -5518,10 +5477,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Eix %1%2</translation>
</message>
@@ -5532,9 +5491,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[desconegut]</translation>
</message>
@@ -5660,76 +5619,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Inici</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Tàctil</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
- <translation type="unfinished"/>
+ <translation>Roda</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
- <translation type="unfinished"/>
+ <translation>Enrere</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
- <translation type="unfinished"/>
+ <translation>Endavant</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
- <translation type="unfinished"/>
+ <translation>Tasca</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
- <translation type="unfinished"/>
+ <translation>Extra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[indefinit]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
- <translation type="unfinished"/>
+ <translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[invàlid]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Rotació %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Eix %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Eixos %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Moviment %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Botó %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[sense ús]</translation>
</message>
diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts
index 1d2220972..65bb1f792 100644
--- a/dist/languages/cs.ts
+++ b/dist/languages/cs.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Zrušit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Dotkněte se levého horního rohu &lt;br&gt;vašeho touchpadu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Teď se dotkněte dolního pravého rohu &lt;br&gt;vašeho touchpadu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Nastavení dokončeno!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -892,49 +892,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Resetovat mezipaměť metadat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Vyberte emulovanou NAND složku...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Vyberte emulovanou SD složku...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Vyberte cestu ke Gamecard...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Vyberte složku pro vysypání...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Vyberte složku pro Mod Load...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Mezipaměť metadat je již prázdná.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operace byla úspěšně dokončena.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Mezipaměť metadat nemohla být odstraněna. Možná je používána nebo neexistuje.</translation>
</message>
@@ -995,36 +995,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Potvrzovat exit při spuštěné emulaci</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Zeptat se na uživatele při spuštění hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pozastavit emulaci, když je aplikace v pozadí</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Skrýt myš při neaktivitě</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Resetovat všechna nastavení</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Toto vyresetuje všechna nastavení a odstraní konfigurace pro jednotlivé hry. Složky s hrami a profily zůstanou zachovány. Přejete si pokračovat?</translation>
</message>
@@ -1412,86 +1422,6 @@ p, li { white-space: pre-wrap; }
<translation>[čekání]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1901,7 +1831,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Levá Páčka</translation>
</message>
@@ -1995,14 +1925,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2021,7 +1951,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus</translation>
</message>
@@ -2034,15 +1964,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2099,225 +2029,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Pravá páčka</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Vyčistit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[nenastaveno]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Přepnout tlačítko</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Převrátit osy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Namapovat analogovou páčku</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Po stisknutí OK nejprve posuňte joystick horizontálně, poté vertikálně.
Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontálně.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Deadzone: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Rozsah modifikátoru: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Dual Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Levý Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Pravý Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>V rukou</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Ovladač GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Control Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Shake!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[čekání]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nový profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Zadejte název profilu:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Vytvořit profil vstupu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Zadaný název profilu není platný!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Nepodařilo se vytvořit profil vstupu &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Odstranit profil vstupu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Nepodařilo se odstranit profil vstupu &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Načíst profil vstupu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Nepodařilo se načíst profil vstupu &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Uložit profil vstupu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Nepodařilo se uložit profil vstupu &quot;%1&quot;</translation>
</message>
@@ -2365,7 +2300,7 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfigurovat </translation>
</message>
@@ -2401,7 +2336,7 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2416,82 +2351,82 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln
<translation>Odstranit server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Dozvědět se více&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Číslo portu obsahuje neplatné znaky</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port musí být v rozsahu 0 až 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP adresa není platná</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>UDP server již existuje</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Není možné přidat více než 8 serverů</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testování</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Nastavování</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test byl úspěšný</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Úspěšně jsme získali data ze serveru.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test byl neúspěšný</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Nedostali jsme platná data ze serveru.&lt;br&gt;Prosím zkontrolujte, že váš server je nastaven správně a že adresa a port jsou zadány správně.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Probíhá test UDP nebo konfigurace kalibrace.&lt;br&gt;Prosím vyčkejte na dokončení.</translation>
</message>
@@ -3403,7 +3338,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<translation>Nový název:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[stiskněte klávesu]</translation>
</message>
@@ -3618,68 +3553,73 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibrace</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Hráč 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Hráč 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Hráč 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Hráč 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Hráč 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Hráč 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Hráč 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Hráč 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Nastavení</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Povolit přesné vibrace</translation>
</message>
@@ -3887,818 +3827,842 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z
<translation>Čas potřebný na emulaci framu scény, nepočítá se limit nebo v-sync. Pro plnou rychlost by se tohle mělo pohybovat okolo 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Zjištěno neplatné nastavení</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Ruční ovladač nelze používat v dokovacím režimu. Bude vybrán ovladač Pro Controller.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Vymazat poslední soubory</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Pokračovat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pauza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Varování Zastaralý Formát Hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Používáte rozbalený formát hry, který je zastaralý a byl nahrazen jinými jako NCA, NAX, XCI, nebo NSP. Rozbalená ROM nemá ikony, metadata, a podporu updatů.&lt;br&gt;&lt;br&gt;Pro vysvětlení všech možných podporovaných typů, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;zkoukni naší wiki&lt;/a&gt;. Tato zpráva se nebude znova zobrazovat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Chyba při načítání ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Tento formát ROM není podporován.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Nastala chyba při inicializaci jádra videa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Chyba při načítání ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Pro extrakci souborů postupujte podle &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;rychlého průvodce yuzu&lt;/a&gt;. Nápovědu naleznete na &lt;br&gt;wiki&lt;/a&gt; nebo na Discordu&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Nastala chyba. Koukni do logu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Uložit data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Módovat Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Chyba otevírání složky %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Složka neexistuje!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Chyba při otevírání přenositelné mezipaměti shaderů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Obsah</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Aktualizace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Odebrat položku</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Odebrat Nainstalovanou Hru %1? </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Úspěšně odebráno</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Úspěšně odebrán nainstalovaný základ hry.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Chyba při odstraňování %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Základ hry není nainstalovaný na NAND a nemůže být odstraněn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Úspěšně odebrána nainstalovaná aktualizace.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Není nainstalovaná žádná aktualizace pro tento titul.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Není nainstalované žádné DLC pro tento titul.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Úspěšně odstraněno %1 nainstalovaných DLC.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Odstranit vlastní konfiguraci hry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Odstranit soubor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Chyba při odstraňování přenositelné mezipaměti shaderů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Mezipaměť shaderů pro tento titul neexistuje.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Přenositelná mezipaměť shaderů úspěšně odstraněna</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Nepodařilo se odstranit přenositelnou mezipaměť shaderů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Chyba při odstraňování vlastní konfigurace hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Vlastní konfigurace hry pro tento titul neexistuje.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Úspěšně odstraněna vlastní konfigurace hry.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Nepodařilo se odstranit vlastní konfiguraci hry.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Extrakce RomFS se nepovedla!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Nastala chyba při kopírování RomFS souborů, nebo uživatel operaci zrušil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Plný</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Kostra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Vyber RomFS Dump Mode</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Vyber jak by si chtěl RomFS vypsat.&lt;br&gt;Plné zkopíruje úplně všechno, ale&lt;br&gt;kostra zkopíruje jen strukturu složky.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extrahuji RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extrakce RomFS se povedla!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operace byla dokončena úspěšně.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Chyba při otevírání %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Vybraná Složka</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Vlastnosti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Herní vlastnosti nemohly být načteny.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch Executable (%1);;Všechny soubory (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Načíst soubor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Otevřít složku s extrahovanou ROM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Vybraná složka je neplatná</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Složka kterou jste vybrali neobsahuje soubor &quot;main&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Instalovatelný soubor pro Switch (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Instalovat Soubory</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalování souboru &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Výsledek instalace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Abychom předešli možným konfliktům, nedoporučujeme uživatelům instalovat základní hry na paměť NAND.
Tuto funkci prosím používejte pouze k instalaci aktualizací a DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systémová Aplikace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systémový archív</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systémový Update Aplikace</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware-ový baliček (Typu A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-ový baliček (Typu B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Hra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Update Hry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Herní DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Title</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Vyberte typ instalace NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Vyberte typ title-u, který chcete nainstalovat tenhle NCA jako:
(Většinou základní &quot;game&quot; stačí.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Chyba v instalaci</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Tento typ pro tento NCA není platný.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Soubor nenalezen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Soubor &quot;%1&quot; nenalezen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Chybí účet yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Pro přidání recenze kompatibility je třeba mít účet yuzu&lt;br&gt;&lt;br/&gt;Pro nalinkování yuzu účtu jdi do Emulace &amp;gt; Konfigurace &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Chyba při otevírání URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Nelze otevřít URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Zjištěno neplatné nastavení</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Ruční ovladač nelze používat v dokovacím režimu. Bude vybrán ovladač Pro Controller.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Soubor Amiibo (%1);; Všechny Soubory (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Načíst Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Chyba při načítání souboru Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Amiibo &quot;%1&quot; nešlo otevřít v řežimu pro čtení.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Chyba načítání Amiiba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Načtení celého Amiiba nebylo možné. Očekáváno bylo %1 bytů, ale pouze %2 bytů se načetlo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Chyba načítání Amiiba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Načtení Amiiba nebylo možné</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Pořídit Snímek Obrazovky</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG Image (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Rychlost: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Rychlost: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Hra: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMÁLNÍ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU VYSOKÝ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTRÉMNÍ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU ERROR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Hra, kterou se snažíte načíst potřebuje další data z vašeho Switche, než bude moci být načtena.&lt;br/&gt;&lt;br/&gt;Pro více informací o získání těchto souboru se koukněte na wiki: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Získávání Systémových Archivů a Sdílených Fontu z konzole Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Přejete si odejít do listu her? Pokračování v emulaci by mohlo mít negativní účinky jako crashe, rozbité savy , nebo další bugy.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>Aplikace yuzu nenašla systémový archiv Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>Aplikace yuzu nenašla systémový archiv Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Systémový Archív Nenalezen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Chybí systémový archiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>Aplikace yuzu nenašla sdílená písma Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Sdílené Fonty Nenalezeny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Chybí sdílené písmo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Fatální Chyba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu narazilo na fatální chybu, prosím kouknšte do logu pro více informací. Pro více informací jak se dostat do logu se koukněte na následující stránku: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt; Jak Uploadnout Log&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Přejete si odejít do listu her? Pokračování v emulaci může mít za následek crashe, rozbité savy, nebo další bugy.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Vyskytla se kritická chyba</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Potvďte Rederivaci Klíčů</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4715,37 +4679,37 @@ a udělejte si zálohu.
Toto vymaže věechny vaše automaticky generované klíče a znova spustí modul derivace klíčů.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Chybí Fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Chybí BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Chybí BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - Chybí PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Chybé odvozené komponenty</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4754,39 +4718,39 @@ Tohle může zabrat až minutu
podle výkonu systému.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Derivuji Klíče</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Vyberte Cíl vypsaní RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Vyberte, kterou RomFS chcete vypsat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Jste si jist, že chcete zavřít yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Jste si jist, že chcete ukončit emulaci? Jakýkolic neuložený postup bude ztracen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5327,8 +5291,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Načíst &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5430,15 +5394,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>START/PAUSE</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5487,8 +5446,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[Nenastaveno]</translation>
</message>
@@ -5499,10 +5458,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Osa %1%2</translation>
</message>
@@ -5513,9 +5472,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[Neznámá]</translation>
</message>
@@ -5641,76 +5600,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Dotyk</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[nepoužito]</translation>
</message>
diff --git a/dist/languages/da.ts b/dist/languages/da.ts
index 620997de7..7ba5b125a 100644
--- a/dist/languages/da.ts
+++ b/dist/languages/da.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Afbryd</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Rør det øverste venstre hjørne &lt;br&gt; af din pegeplade.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Rør nu det nederste højre hjørne &lt;br&gt; af din pegeplade.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfiguration fuldført!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -900,49 +900,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Nulstil Metadata-Mellemlager</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Vælg Emuleret NAND-Mappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Vælg Emuleret SD-Mappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Vælg Spilkort-Sti...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Vælg Nedfældningsmappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Vælg Mod-Indlæsningsmappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Metadata-mellemlageret er allerede tomt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Fuldførelse af opgaven lykkedes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Metadata-mellemlageret kunne ikke slettes. Det kan være i brug eller ikke-eksisterende.</translation>
</message>
@@ -1003,36 +1003,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Bekræft afslutning, mens emulering kører</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Spørg efter bruger, ved opstart af spil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Sæt emulering på pause, når i baggrund</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Skjul mus ved inaktivitet</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Nulstil Alle Indstillinger</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>dette nulstiller alle indstillinger og fjerner alle pr-spil-konfigurationer. Dette vil ikke slette spilmapper, -profiler, eller input-profiler. Fortsæt?</translation>
</message>
@@ -1420,86 +1430,6 @@ p, li { white-space: pre-wrap; }
<translation>[venter]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1909,7 +1839,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Venstre Styrepind</translation>
</message>
@@ -2003,14 +1933,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2029,7 +1959,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus</translation>
</message>
@@ -2042,15 +1972,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2107,225 +2037,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Højre Styrepind</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Ryd</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[ikke indstillet]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Funktionsskifteknap</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Omvend akser</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Angiv tærskel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Vælg en værdi imellem 0% og 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Tilsted Analog Pind</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Bevæg, efter tryk på OK, først din styrepind vandret og så lodret.
Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Dødzone: 1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Forandringsrækkevidde: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro-Styringsenhed</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Dobbelt-Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Venstre Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Højre Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Håndholdt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube-Styringsenhed</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Styrepind</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Pind</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Ryst!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[venter]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Ny Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Indtast et profilnavn:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Opret Input-Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Det angivne profilnavn er ikke gyldigt!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Oprettelse af input-profil &quot;%1&quot; mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Slet Input-Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Sletning af input-profil &quot;%1&quot; mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Indlæs Input-Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Indlæsning af input-profil &quot;%1&quot; mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Gem Input-Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Lagring af input-profil &quot;%1&quot; mislykkedes</translation>
</message>
@@ -2373,7 +2308,7 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfigurér</translation>
</message>
@@ -2409,7 +2344,7 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.</tra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Afprøv</translation>
</message>
@@ -2424,82 +2359,82 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.</tra
<translation>Fjernserver</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Find Ud Af Mere&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Portnummer indeholder ugyldige tegn</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port skal være imellem 0 and 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP-adresse er ikke gyldig</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Denne UDP-server eksisterer allerede</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Ude af stand til, at tilføje mere end 8 servere</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Afprøvning</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Konfigurér</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Afprøvning Lykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Modtagelse af data fra serveren lykkedes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Afprøvning Mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Kunne ikke modtage gyldig data fra serveren.&lt;br&gt;Bekræft venligst, at serveren er opsat korrekt, og at adressen og porten er korrekte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP-Afprøvnings- eller -kalibreringskonfiguration er i gang.&lt;br&gt;vent venligst på, at de bliver færdige.</translation>
</message>
@@ -3411,7 +3346,7 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r
<translation>Nyt navn:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[tryk på tast]</translation>
</message>
@@ -3626,68 +3561,73 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibration</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Spiller 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Spiller 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Spiller 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Spiller 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Spiller 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Spiller 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Spiller 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Spiller 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Indstillinger</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Aktivér Nøjagtig Vibration</translation>
</message>
@@ -3895,816 +3835,840 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Advarsel, Forældet Spilformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Fejl under indlæsning af ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>ROM-formatet understøttes ikke.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Der skete en fejl under initialisering af video-kerne.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Fejl ved Åbning af %1 Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Mappe eksisterer ikke!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS-Udpakning Mislykkedes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Der skete en fejl ved kopiering af RomFS-filerne, eller brugeren afbrød opgaven.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Fuld</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Skelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Vælg RomFS-Nedfældelsestilstand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Udpakker RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Afbryd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS-Udpakning Lykkedes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Fuldførelse af opgaven lykkedes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Fejl ved Åbning af %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Vælg Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Egenskaber</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Spil-egenskaberne kunne ikke indlæses.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch-Eksekverbar (%1);;Alle filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Indlæs Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Åbn Udpakket ROM-Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Ugyldig Mappe Valgt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installér fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systemapplikation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systemapplikationsopdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmwarepakke (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmwarepakke (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Spil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Spilopdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Spiludvidelse</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta-Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Vælg NCA-Installationstype...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Installation mislykkedes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Fil ikke fundet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Fil &quot;%1&quot; ikke fundet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Manglende yuzu-Konto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Fil (%1);; Alle Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Indlæs Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Fejl ved åbning af Amiibo-datafil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Ude af stand til, at åbne Amiibo-fil &quot;%1&quot; til indlæsning.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Fejl ved indlæsning af Amiibo-datafil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Fejl ved indlæsning af Amiibo-data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Ude af stand til, at indlæse Amiibo-data.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Optag Skærmbillede</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG-Billede (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighed: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Hastighed: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Spil: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Billede: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu var ude af stand til, at lokalisere et Switch-systemarkiv. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu var ude af stand til, at lokalisere et Switch-systemarkiv. %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Systemarkiv Ikke Fundet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Systemarkiv Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu var ude af stand til, at finde delte Switch-skrifttyper. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Delte Skrifttyper Ikke Fundet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Delte Skrifttyper Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Fatal Fejl</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Stødte på Fatal Fejl</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4715,76 +4679,76 @@ This will delete your autogenerated key files and re-run the key derivation modu
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Er du sikker på, at du vil lukke yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Er du sikker på, at du vil stoppe emulereingen? Enhver ulagret data, vil gå tabt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5322,7 +5286,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5421,15 +5385,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5478,8 +5437,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[ikke indstillet]</translation>
</message>
@@ -5490,10 +5449,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Akse %1%2</translation>
</message>
@@ -5504,9 +5463,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[ukendt]</translation>
</message>
@@ -5632,76 +5591,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Hjem</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Berøring</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[ubrugt]</translation>
</message>
diff --git a/dist/languages/de.ts b/dist/languages/de.ts
index ff20f355a..787269a03 100644
--- a/dist/languages/de.ts
+++ b/dist/languages/de.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Tippe auf die obere linke Ecke &lt;br&gt;deines Touchpads.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Tippe nun auf die untere rechte Ecke &lt;br&gt;deines Touchpads.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfiguration abgeschlossen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -891,49 +891,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Metadaten-Cache zurücksetzen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Emulierten NAND-Ordner auswählen...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Emulierten SD-Ordner auswählen...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Gamecard-Pfad auswählen...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Dump-Verzeichnis auswählen...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Mod-Ladeverzeichnis auswählen...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Der Metadaten-Cache ist bereits leer.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Der Vorgang wurde erfolgreich abgeschlossen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Der Metadaten-Cache konnte nicht gelöscht werden. Er könnte in Gebrauch oder nicht vorhanden sein.</translation>
</message>
@@ -994,36 +994,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Schließen des Emulators bestätigen, falls ein Spiel läuft</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Beim Spielstart nach Nutzer fragen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Emulation im Hintergrund pausieren</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Mauszeiger verstecken</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Setze alle Einstellungen zurück</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Hierdurch werden alle Einstellungen zurückgesetzt und alle spielspezifischen Konfigurationen gelöscht. Spiel-Ordner, Profile oder Eingabeprofile werden nicht gelöscht. Fortfahren?</translation>
</message>
@@ -1411,86 +1421,6 @@ p, li { white-space: pre-wrap; }
<translation>[wartet]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1900,7 +1830,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Linker Analogstick</translation>
</message>
@@ -1994,14 +1924,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2020,7 +1950,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus</translation>
</message>
@@ -2033,15 +1963,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2098,225 +2028,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Rechter Analogstick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[nicht belegt]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Taste umschalten</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Achsen umkehren</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Wert zwischen 0% und 100% wählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Analog-Stick festlegen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Nach dem Drücken von OK den Joystick zuerst horizontal, dann vertikal bewegen.
Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizontal.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Deadzone: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modifikator-Radius: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Zwei Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Linker Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Rechter Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Handheld</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube-Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Analog Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Schütteln!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[wartet]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Neues Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Profilnamen eingeben:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Eingabeprofil erstellen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Angegebener Profilname ist nicht gültig!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Erstellen des Eingabeprofils &quot;%1&quot; ist fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Eingabeprofil löschen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Löschen des Eingabeprofils &quot;%1&quot; ist fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Eingabeprofil laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Laden des Eingabeprofils &quot;%1&quot; ist fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Eingabeprofil speichern</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Speichern des Eingabeprofils &quot;%1&quot; ist fehlgeschlagen</translation>
</message>
@@ -2364,7 +2299,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Einrichtung</translation>
</message>
@@ -2400,7 +2335,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Testen</translation>
</message>
@@ -2415,82 +2350,82 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
<translation>Server löschen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mehr erfahren&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Port-Nummer hat ungültige Zeichen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port muss zwischen 0 und 65353 liegen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP Adresse ist ungültig</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Dieser UDP-Server existiert bereits</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Es können nicht mehr als 8 Server hinzugefügt werden</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Einrichten</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test erfolgreich</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Daten wurden erfolgreich vom Server empfangen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Konnte keine Daten vom Server empfangen.&lt;br&gt;Prüfe bitte, dass der Server korrekt eingerichtet wurde und dass Adresse und Port korrekt sind.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP-Test oder Kalibration wird gerade durchgeführt.&lt;br&gt;Bitte warte einen Moment.</translation>
</message>
@@ -3402,7 +3337,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf
<translation>Neuer Name:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[Knopf drücken]</translation>
</message>
@@ -3617,68 +3552,73 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibration</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Spieler 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Spieler 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Spieler 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Spieler 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Spieler 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Spieler 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Spieler 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Spieler 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Erlaube genaue Vibrationen</translation>
</message>
@@ -3886,818 +3826,842 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf
<translation>Zeit, die gebraucht wurde, um einen Switch-Frame zu emulieren, ohne Framelimit oder V-Sync. Für eine Emulation bei voller Geschwindigkeit sollte dieser Wert bei höchstens 16.67ms liegen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Ungültige Konfiguration erkannt</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Handheld-Controller können nicht im Dock verwendet werden. Der Pro-Controller wird verwendet.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Zuletzt geladene Dateien leeren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Fortsetzen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Warnung veraltetes Spielformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Du nutzt eine entpackte ROM-Ordnerstruktur für dieses Spiel, welches ein veraltetes Format ist und von anderen Formaten wie NCA, NAX, XCI oder NSP überholt wurde. Entpackte ROM-Ordner unterstützen keine Icons, Metadaten oder Updates.&lt;br&gt;&lt;br&gt;&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Unser Wiki&lt;/a&gt; enthält eine Erklärung der verschiedenen Formate, die yuzu unterstützt. Diese Nachricht wird nicht noch einmal angezeigt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>ROM konnte nicht geladen werden!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>ROM-Format wird nicht unterstützt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Beim Initialisieren des Video-Kerns ist ein Fehler aufgetreten.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>ROM konnte nicht geladen werden! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Bitte folge der &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu-Schnellstart-Anleitung&lt;/a&gt; um deine Dateien zu extrahieren.&lt;br&gt;Hilfe findest du im yuzu-Wiki&lt;/a&gt; oder dem yuzu-Discord&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Ein unbekannter Fehler ist aufgetreten. Bitte prüfe die Log-Dateien auf mögliche Fehlermeldungen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-Bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-Bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Speicherdaten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod-Daten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Konnte Verzeichnis %1 nicht öffnen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Verzeichnis existiert nicht!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Fehler beim Öffnen des transferierbaren Shader-Caches</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Inhalte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Eintrag entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Installiertes Spiel %1 entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Erfolgreich entfernt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Das Spiel wurde entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Fehler beim Entfernen von %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Das Spiel ist nicht im NAND installiert und kann somit nicht entfernt werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Das Update wurde entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Es ist kein Update für diesen Titel installiert.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Es sind keine DLC für diesen Titel installiert.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 DLC entfernt. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Transferierbaren OpenGL Shader Cache löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Transferierbaren Vulkan Shader Cache löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Alle transferierbaren Shader Caches löschen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Spiel-Einstellungen entfernen?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Datei entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Fehler beim Entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Es existiert kein Shader-Cache für diesen Titel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Der transferierbare Shader-Cache wurde entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Konnte den transferierbaren Shader-Cache nicht entfernen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Fehler beim Entfernen der transferierbaren Shader Caches</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Fehler beim Entfernen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Es existieren keine Spiel-Einstellungen für dieses Spiel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Die Spiel-Einstellungen wurden entfernt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Die Spiel-Einstellungen konnten nicht entfernt werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS-Extraktion fehlgeschlagen!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Das RomFS konnte wegen eines Fehlers oder Abbruchs nicht kopiert werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Komplett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Nur Ordnerstruktur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS Extraktions-Modus auswählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Bitte wähle, wie das RomFS gespeichert werden soll.&lt;br&gt;&quot;Full&quot; wird alle Dateien des Spiels extrahieren, während &lt;br&gt;&quot;Skeleton&quot; nur die Ordnerstruktur erstellt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>RomFS wird extrahiert...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS wurde extrahiert!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Der Vorgang wurde erfolgreich abgeschlossen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Fehler beim Öffnen von %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Verzeichnis auswählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Einstellungen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Spiel-Einstellungen konnten nicht geladen werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch-Programme (%1);;Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Datei laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Öffne das extrahierte ROM-Verzeichnis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Ungültiges Verzeichnis ausgewählt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Das Verzeichnis, das du ausgewählt hast, enthält keine &apos;main&apos;-Datei.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Installierbares Switch-Programm (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Dateien installieren</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Datei &quot;%1&quot; wird installiert...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>NAND-Installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Um Konflikte zu vermeiden, raten wir Nutzern davon ab, Spiele im NAND zu installieren.
Bitte nutze diese Funktion nur zum Installieren von Updates und DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systemanwendung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systemarchiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systemanwendungsupdate</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware-Paket (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-Paket (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Spiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Spiel-Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Spiel-DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta-Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Wähle den NCA-Installationstyp aus...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Bitte wähle, als was diese NCA installiert werden soll:
(In den meisten Fällen sollte die Standardeinstellung &apos;Spiel&apos; ausreichen.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Installation fehlgeschlagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Der Titel-Typ, den du für diese NCA ausgewählt hast, ist ungültig.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Datei nicht gefunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Datei &quot;%1&quot; nicht gefunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Fehlender yuzu-Account</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Um einen Kompatibilitätsbericht abzuschicken, musst du einen yuzu-Account mit yuzu verbinden.&lt;br&gt;&lt;br/&gt;Um einen yuzu-Account zu verbinden, prüfe die Einstellungen unter Emulation &amp;gt; Konfiguration &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Fehler beim Öffnen der URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>URL &quot;%1&quot; kann nicht geöffnet werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>TAS Aufnahme</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Datei von Spieler 1 überschreiben?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Ungültige Konfiguration erkannt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Handheld-Controller können nicht im Dock verwendet werden. Der Pro-Controller wird verwendet.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Datei (%1);; Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Amiibo laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Fehler beim Öffnen der Amiibo Datei</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Die Amiibo Datei &quot;%1&quot; konnte nicht zum Lesen geöffnet werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Fehler beim Lesen der Amiibo-Daten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Amiibo-Daten können nicht vollständig gelesen werden. Es wurde erwartet, dass %1 Bytes gelesen werden, es konnten aber nur %2 Bytes gelesen werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Fehler beim Laden der Amiibo-Daten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Amiibo-Daten konnten nicht geladen werden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Screenshot aufnehmen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bild (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS Zustand: Läuft %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS Zustand: Aufnahme %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS Zustand: Ungültig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Geschwindigkeit: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Geschwindigkeit: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Spiel: %1 FPS (Unbegrenzt)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Spiel: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU HOCH</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU FEHLER</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Das Spiel, dass du versuchst zu spielen, benötigt bestimmte Dateien von deiner Switch-Konsole.&lt;br/&gt;&lt;br/&gt;Um Informationen darüber zu erhalten, wie du diese Dateien von deiner Switch extrahieren kannst, prüfe bitte die folgenden Wiki-Seiten: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;System-Archive und Shared Fonts von einer Switch-Konsole extrahieren&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Willst du zur Spiele-Liste zurückkehren und die Emulation beenden? Das Fortsetzen der Emulation könnte zu Spielfehlern, Abstürzen, beschädigten Speicherdaten und anderen Fehlern führen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu konnte ein Switch Systemarchiv nicht finden. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu konnte ein Switch Systemarchiv nicht finden: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Systemarchiv nicht gefunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Systemarchiv fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu konnte die Switch Shared Fonts nicht finden. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Shared Fonts nicht gefunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Shared Font fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Schwerwiegender Fehler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Ein schwerwiegender Fehler ist aufgetreten, bitte prüfe die Log-Dateien auf mögliche Fehlermeldungen. Weitere Informationen: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Wie kann ich eine Log-Datei hochladen&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Willst du zur Spiele-Liste zurückkehren und die Emulation beenden? Das Fortsetzen der Emulation könnte zu Spielfehlern, Abstürzen, beschädigten Speicherdaten und anderen Fehlern führen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Fataler Fehler aufgetreten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Schlüsselableitung bestätigen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4710,37 +4674,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
Dieser Prozess wird die generierten Schlüsseldateien löschen und die Schlüsselableitung neu starten.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Fuses fehlen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFO fehlt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Derivationskomponenten fehlen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4748,39 +4712,39 @@ on your system&apos;s performance.</source>
Dies könnte, je nach Leistung deines Systems, bis zu einer Minute dauern.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Schlüsselableitung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS wählen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Wähle, welches RomFS du speichern möchtest.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Bist du sicher, dass du yuzu beenden willst?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Bist du sicher, dass du die Emulation stoppen willst? Jeder nicht gespeicherte Fortschritt geht verloren.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5322,8 +5286,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>&amp;Amiibo laden...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5425,15 +5389,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>START/PAUSE</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5482,8 +5441,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[nicht gesetzt]</translation>
</message>
@@ -5494,10 +5453,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Achse %1%2</translation>
</message>
@@ -5508,9 +5467,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[unbekannt]</translation>
</message>
@@ -5636,76 +5595,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Touch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[unbenutzt]</translation>
</message>
diff --git a/dist/languages/es.ts b/dist/languages/es.ts
index 1d4ad232b..d9deac0d9 100644
--- a/dist/languages/es.ts
+++ b/dist/languages/es.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Toque la esquina superior izquierda&lt;br&gt;de su trackpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Ahora toque la esquina inferior derecha &lt;br&gt;de su trackpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>¡Configuración completada!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -900,49 +900,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Reiniciar caché de metadatos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Selecciona el directorio de NAND emulado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Seleccione el directorio de SD emulado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Seleccione la ruta del cartucho...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Seleccione directorio de volcado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Seleccione el directorio de carga de mod...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>El caché de metadatos ya está vacío.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>La operación se completó con éxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>El caché de metadatos no se pudo eliminar. Puede que se encuentre en uso actualmente o ya haya sido eliminado.</translation>
</message>
@@ -1003,36 +1003,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Confirmar salida mientras se ejecuta la emulación</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Mostrar usuario actual al abrir el juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausar emulación cuando la ventana esté en segundo plano</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Ocultar el cursor en caso de inactividad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Reiniciar todos los ajustes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Esto reiniciará y eliminará todas las configuraciones de los juegos. No eliminará ni los directorios de juego, ni los perfiles, ni los perfiles de los mandos. ¿Continuar?</translation>
</message>
@@ -1420,86 +1430,6 @@ p, li { white-space: pre-wrap; }
<translation>[esperando]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Menos</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Más</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1909,7 +1839,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Palanca izquierda</translation>
</message>
@@ -2003,14 +1933,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2029,7 +1959,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Más</translation>
</message>
@@ -2042,15 +1972,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2107,225 +2037,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Palanca derecha</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Borrar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[no definido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Alternar botón</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Invertir botón</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Invertir ejes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Configurar umbral</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Seleccione un valor entre 0% y 100%.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Configuración de palanca analógico</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Después de pulsar OK, mueve primero el joystick de manera horizontal, y luego verticalmente.
Para invertir los ejes, mueve primero el joystick de manera vertical, y luego horizontalmente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Punto muerto: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Rango del modificador: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Controlador Pro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joycons duales</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon izquierdo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon derecho</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Portátil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Controlador de GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Controlador NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Controlador SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Controlador N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Inicio / Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Palanca de control</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>¡Agita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[esperando]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nuevo perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Introduce un nombre de perfil:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Crear perfil de entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>¡El nombre de perfil introducido no es válido!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Error al crear el perfil de entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Eliminar perfil de entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Error al eliminar el perfil de entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Cargar perfil de entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Error al cargar el perfil de entrada &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Guardar perfil de entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Error al guardar el perfil de entrada &quot;%1&quot;</translation>
</message>
@@ -2373,7 +2308,7 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configurar</translation>
</message>
@@ -2409,7 +2344,7 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Probar</translation>
</message>
@@ -2424,82 +2359,82 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho
<translation>Eliminar servidor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Más información&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>El número del puerto tiene caracteres que no son válidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>El puerto debe estar en un rango entre 0 y 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>Dirección IP no válida</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Este servidor UDP ya existe</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>No es posible añadir más de 8 servidores</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Probando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configurando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Prueba existosa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Se han recibido con éxito los datos del servidor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Prueba fallida</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>No se han podido recibir datos válidos del servidor.&lt;br&gt;Por favor, verifica que el servidor esté configurado correctamente y que la dirección y el puerto sean correctos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>La prueba de UDP o la configuración de la calibración está en curso.&lt;br&gt;Por favor, espera a que termine el proceso.</translation>
</message>
@@ -3411,7 +3346,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de
<translation>Nuevo nombre:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[presionar tecla]</translation>
</message>
@@ -3626,68 +3561,73 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibración</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Jugador 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Jugador 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Jugador 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Jugador 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Jugador 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Jugador 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Jugador 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Jugador 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Ajustes</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Activar vibración precisa</translation>
</message>
@@ -3895,440 +3835,430 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de
<translation>Tiempo que lleva emular un fotograma de la Switch, sin tener en cuenta la limitación de fotogramas o sincronización vertical. Para una emulación óptima, este valor debería ser como máximo de 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Configuración no válida detectada</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>El controlador del modo portátil no puede ser usado en el modo sobremesa. Se seleccionará el controlador Pro en su lugar.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Eliminar archivos recientes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu está ejecutando un juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Advertencia: formato del juego obsoleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Está utilizando el formato de directorio de ROM deconstruido para este juego, que es un formato desactualizado que ha sido reemplazado por otros, como los NCA, NAX, XCI o NSP. Los directorios de ROM deconstruidos carecen de íconos, metadatos y soporte de actualizaciones.&lt;br&gt;&lt;br&gt;Para ver una explicación de los diversos formatos de Switch que soporta yuzu,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;echa un vistazo a nuestra wiki&lt;/a&gt;. Este mensaje no se volverá a mostrar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>¡Error al cargar la ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>El formato de la ROM no es compatible.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Se ha producido un error al inicializar el núcleo de video.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu ha encontrado un error al ejecutar el núcleo de video. Esto suele ocurrir al no tener los controladores de la GPU actualizados, incluyendo los integrados. Por favor, revisa el registro para más detalles. Para más información sobre cómo acceder al registro, por favor, consulta la siguiente página: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Como cargar el archivo de registro&lt;/a&gt;. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>¡Error al cargar la ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Por favor, sigue &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guía de inicio rápido de yuzu&lt;/a&gt; para revolcar los archivos.&lt;br&gt;Puedes consultar la wiki de yuzu&lt;/a&gt; o el Discord de yuzu&lt;/a&gt; para obtener ayuda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Error desconocido. Por favor, consulte el archivo de registro para ver más detalles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Datos de guardado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Datos de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Error al abrir la carpeta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>¡La carpeta no existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Error al abrir el caché transferible de shaders</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>No se pudo crear el directorio de la caché de los shaders para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Contenidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Actualización</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Eliminar entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>¿Eliminar el juego instalado %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Se ha eliminado con éxito</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Se ha eliminado con éxito el juego base instalado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Error al eliminar %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>El juego base no está instalado en el NAND y no se puede eliminar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Se ha eliminado con éxito la actualización instalada.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>No hay ninguna actualización instalada para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>No hay ningún DLC instalado para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Se ha eliminado con éxito %1 DLC instalado(s).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>¿Deseas eliminar el caché transferible de shaders de OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>¿Deseas eliminar el caché transferible de shaders de Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>¿Deseas eliminar todo el caché transferible de shaders?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>¿Deseas eliminar la configuración personalizada del juego?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Eliminar archivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Error al eliminar la caché de shaders transferibles</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>No existe caché de shaders para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>El caché de shaders transferibles se ha eliminado con éxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>No se ha podido eliminar la caché de shaders transferibles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Error al eliminar las cachés de shaders transferibles</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Cachés de shaders transferibles eliminadas con éxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>No se ha podido eliminar el directorio de cachés de shaders transferibles.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Error al eliminar la configuración personalizada del juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>No existe una configuración personalizada para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Se eliminó con éxito la configuración personalizada del juego.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>No se ha podido eliminar la configuración personalizada del juego.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>¡La extracción de RomFS ha fallado!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Se ha producido un error al copiar los archivos RomFS o el usuario ha cancelado la operación.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Completo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Esquema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Elegir método de volcado de RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Seleccione la forma en que quieras volcar el RomFS. &lt;br&gt;Copiará todos los archivos en el nuevo directorio &lt;br&gt; mientras que el esqueleto solo creará la estructura del directorio.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>No hay suficiente espacio en %1 para extraer el RomFS. Por favor, libera espacio o elige otro directorio de volcado en Emulación &gt; Configuración &gt; Sistema &gt; Sistema de archivos &gt; Raíz de volcado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extrayendo RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>¡La extracción RomFS ha tenido éxito!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>La operación se completó con éxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Error al intentar abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Seleccionar directorio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Propiedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>No se pueden cargar las propiedades del juego.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Ejecutable de Switch (%1);;Todos los archivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Cargar archivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Abrir el directorio de la ROM extraída</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Directorio seleccionado no válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>El directorio que ha seleccionado no contiene ningún archivo &apos;main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Archivo de Switch Instalable (*.nca *.nsp *.xci);;Archivo de contenidos de Nintendo (*.nca);;Paquete de envío de Nintendo (*.nsp);;Imagen de cartucho NX (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Instalar archivos</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n archivo(s) restantes</numerusform><numerusform>%n archivo(s) restantes</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando el archivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Instalar resultados</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Para evitar posibles conflictos, no recomendamos a los usuarios que instalen juegos base en el NAND.
Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n archivo(s) recién instalado/s
@@ -4336,7 +4266,7 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</tr
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n archivo(s) recién sobreescrito/s
@@ -4344,7 +4274,7 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</tr
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n archivo(s) no se instaló/instalaron
@@ -4352,367 +4282,401 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs.</tr
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplicación del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Archivo del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Actualización de la aplicación del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Paquete de firmware (Tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Paquete de firmware (Tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Actualización de juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC del juego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Titulo delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Seleccione el tipo de instalación NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Seleccione el tipo de título en el que deseas instalar este NCA como:
(En la mayoría de los casos, el &apos;Juego&apos; predeterminado está bien).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Fallo en la instalación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>El tipo de título que seleccionó para el NCA no es válido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Archivo no encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Archivo &quot;%1&quot; no encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>Aceptar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Falta la cuenta de Yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Para enviar un caso de prueba de compatibilidad de juegos, debes vincular tu cuenta de yuzu.&lt;br&gt;&lt;br/&gt; Para vincular tu cuenta de yuzu, ve a Emulación &amp;gt; Configuración &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Error al abrir la URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>No se puede abrir la URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Grabación TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>¿Sobrescribir archivo del jugador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Configuración no válida detectada</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>El controlador del modo portátil no puede ser usado en el modo sobremesa. Se seleccionará el controlador Pro en su lugar.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Archivo amiibo (%1);; Todos los archivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Cargar amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Error al abrir el archivo de datos amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>No se puede abrir el archivo amiibo &quot;%1&quot; para leer.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Error al leer el archivo de datos amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>No se puede leer completamente los datos Amiibo. Se esperaban leer %1 bytes, pero solo se puede leer %2 bytes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Error al cargar los datos Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>No se pueden cargar los datos Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Captura de pantalla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Imagen PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Estado TAS: ejecutando %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Estado TAS: grabando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Estado TAS: inactivo %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Estado TAS: nulo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar de ejecutar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Pausar g&amp;rabación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>G&amp;rabar</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Creando: %n shader(s)</numerusform><numerusform>Construyendo: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Escalado: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidad: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Velocidad: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Juego: %1 FPS (desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Juego: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Fotogramas: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU ALTA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREMA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU ERROR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>PROXIMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICÚBICO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIANO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>El juego que estás intentando cargar requiere archivos adicionales de tu Switch antes de poder jugar. &lt;br/&gt;&lt;br/&gt;Para obtener más información sobre cómo obtener estos archivos, ve a la siguiente página de la wiki: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Volcar archivos del sistema y las fuentes compartidas desde una Consola Switch. &lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;¿Quieres volver a la lista de juegos? Continuar con la emulación puede provocar fallos, datos de guardado corrompidos u otros errores.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu no pudo localizar el archivo de sistema de la Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu no pudo localizar un archivo de sistema de la Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Archivo del sistema no encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Faltan archivos del sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu no pudo encontrar las fuentes compartidas de la Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Fuentes compartidas no encontradas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Faltan fuentes compartidas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Error fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu ha encontrado un error fatal, consulta el registro para obtener más detalles. Para obtener más información sobre cómo acceder al registro, consulta la siguiente página: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;¿Cómo cargar el archivo de registro?&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt; Continuar con la emulación puede provocar fallos, datos de guardado corruptos u otros errores.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Error fatal encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmar la clave de rederivación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4729,37 +4693,37 @@ es lo que quieres hacer si es necesario.
Esto eliminará los archivos de las claves generadas automáticamente y volverá a ejecutar el módulo de derivación de claves.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Faltan fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Falta BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Falta BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - Falta PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Faltan componentes de derivación</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Faltan las claves de encriptación. &lt;br&gt;Por favor, sigue &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guía rápida de yuzu&lt;/a&gt; para obtener todas tus claves, firmware y juegos.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4768,39 +4732,39 @@ Esto puede llevar unos minutos dependiendo
del rendimiento de su sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Obtención de claves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Selecciona el destinatario para volcar el RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Por favor, seleccione los RomFS que deseas volcar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>¿Estás seguro de que quieres cerrar yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>¿Estás seguro de que quieres detener la emulación? Cualquier progreso no guardado se perderá.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5346,8 +5310,8 @@ de inicio.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Cargar &amp;Amiibo</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5449,15 +5413,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>INICIO/PAUSAR</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Cargando</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5506,8 +5465,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[no definido]</translation>
</message>
@@ -5518,10 +5477,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Eje %1%2</translation>
</message>
@@ -5532,9 +5491,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[desconocido]</translation>
</message>
@@ -5660,76 +5619,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Inicio</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Táctil</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[sin definir]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[inválido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Rotación %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Eje %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Eje %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Movimiento %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Botón %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[no usado]</translation>
</message>
diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts
index db87df535..303718a18 100644
--- a/dist/languages/fi.ts
+++ b/dist/languages/fi.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Peruuta</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Kosketa kosketuslevyn vasenta yläreunaa &lt;br&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Kosketa nyt kosketuslevyn oikeaa alakulmaa &lt;br&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfiguraatio suoritettu!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -870,49 +870,49 @@ Ota sisäiset sivutaulukot käyttöön</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operaatio suoritettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation type="unfinished"/>
</message>
@@ -973,36 +973,46 @@ Ota sisäiset sivutaulukot käyttöön</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Vahvista emulaattorin sulkeminen kun emulointi on käynnissä</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation type="unfinished"/>
</message>
@@ -1390,86 +1400,6 @@ Ota sisäiset sivutaulukot käyttöön</translation>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation type="unfinished"/>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1879,7 +1809,7 @@ Ota sisäiset sivutaulukot käyttöön</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Vasen joystick</translation>
</message>
@@ -1973,14 +1903,14 @@ Ota sisäiset sivutaulukot käyttöön</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation type="unfinished"/>
</message>
@@ -1999,7 +1929,7 @@ Ota sisäiset sivutaulukot käyttöön</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation type="unfinished"/>
</message>
@@ -2012,15 +1942,15 @@ Ota sisäiset sivutaulukot käyttöön</translation>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation type="unfinished"/>
</message>
@@ -2077,224 +2007,229 @@ Ota sisäiset sivutaulukot käyttöön</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Oikea joystick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Tyhjennä</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[ei asetettu]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Käsikonsolimoodi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
@@ -2342,7 +2277,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Säädä</translation>
</message>
@@ -2378,7 +2313,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation type="unfinished"/>
</message>
@@ -2393,82 +2328,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation type="unfinished"/>
</message>
@@ -3379,7 +3314,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[paina näppäintä]</translation>
</message>
@@ -3594,68 +3529,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Pelaaja 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Pelaaja 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Pelaaja 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Pelaaja 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Pelaaja 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Pelaaja 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Pelaaja 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Pelaaja 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation type="unfinished"/>
</message>
@@ -3863,818 +3803,842 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Aika, joka kuluu yhden kuvaruudun emulointiin huomioimatta päivitysnopeuden rajoituksia tai v-synciä. Täysnopeuksista emulointia varten tämä saa olla enintään 16,67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>TELAKKA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pysäytä</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Varoitus vanhentunut peliformaatti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Käytät purettua ROM kansioformaattia, joka on vanhentunut tallennusmuoto. Toisin kuin uudet formaatit kuten NCA, NAX, XCI tai NSP, käyttämäsi formaatti ei tue ikoneita eikä päivityksiä. &lt;br&gt;&lt;br&gt;Lukeaksesi lisää yuzun tuetuista Switch formaateista &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;katso wikimme&lt;/a&gt;.
Tätä viestiä ei näytetä uudelleen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Virhe ladatessa ROMia!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>ROM-formaattia ei tueta.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Videoydintä käynnistäessä tapahtui virhe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Tuntematon virhe. Tarkista lokitiedosto lisätietoja varten.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Tallennus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Modin data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Virhe avatessa kansiota %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Kansiota ei ole olemassa!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Virhe avattaessa siirrettävää Shader Cachea</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Sisällöt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Päivitys</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Poista merkintä</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Poistataanko asennettu peli %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Onnistuneesti poistettu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Asennettu pohjapeli poistettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Virhe poistaessa %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Pohjapeliä ei ole asennettu NAND-muistiin eikä sitä voida poistaa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Asennettu päivitys poistettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Tähän sovellukseen ei ole asennettu päivitystä.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Tähän sovellukseen ei ole asennettu DLC:tä.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Asennettu DLC poistettu onnistuneesti %1 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Poistataanko pelin mukautettu määritys?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Poista tiedosto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Virhe poistettaessa siirrettävää Shader Cachea</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Shader cachea tälle sovellukselle ei ole olemassa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Siirrettävä Shadet Cache poistettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Siirrettävän Shader Cachen poisto epäonnistui.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Virhe poistaessa mukautettua määritystä.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Mukautettua määritystä tälle sovellukselle ei ole olemassa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Pelin mukautettu määritys poistettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Pelin mukautetun määrityksen poistaminen epäonnistui.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS purkaminen epäonnistui</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>RomFS tiedostoja kopioidessa tapahtui virhe, tai käyttäjä perui operaation.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Täysi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Luuranko</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Valitse RomFS dumppausmoodi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Valitse kuinka haluat dumpata RomFS:n. &lt;br&gt;Täysi kopioi kaikki tiedostot uuteen kansioon kun taas &lt;br&gt;luuranko luo ainoastaan kansiorakenteen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Puretaan RomFS:ää</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Peruuta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFs purettiin onnistuneesti!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operaatio suoritettiin onnistuneesti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Virhe avatessa %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Valitse kansio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Ominaisuudet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Pelin asetuksia ei saatu ladattua.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch tiedosto (%1);;Kaikki tiedostot (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Lataa tiedosto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Avaa puretun ROMin kansio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Virheellinen kansio valittu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Valitsemasi kansio ei sisällä &quot;main&quot;-tiedostoa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Asennettava Switch tiedosto (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Asenna tiedostoja</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Asennetaan tiedostoa &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Asennustulokset</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Järjestelmäohjelma</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Järjestelmätiedosto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Järjestelmäohjelman päivitys</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware-paketti (A tyyppi)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-paketti (B tyyppi)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Peli</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Pelin päivitys</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Pelin DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta nimike</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Valitse NCA asennustyyppi...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Valitse asennettavan NCA-nimikkeen tyyppi:
(Useimmissa tapauksissa oletustyyppi &quot;Peli&quot; toimii oikein)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Asennus epäonnistui</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Valitsemasi nimiketyyppi on virheellinen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Tiedostoa ei löytynyt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Tiedostoa &quot;%1&quot; ei löytynyt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>yuzu-tili puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Lähettääksesi pelin toimivuusraportin sinun tulee yhdistää yuzu-tilisi. &lt;br&gt;&lt;br/&gt; Liittääksesi yuzu-tilin valitse Emulaatio &amp;gt; Asetukset &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Virhe avatessa URL-osoitetta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>URL-osoitetta &quot;%1&quot;. ei voitu avata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo tiedosto (%1);; Kaikki tiedostot (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Lataa Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Virhe avattaessa Amiibo datatiedostoa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Amiibo tiedoston &quot;%1&quot; avaaminen lukemista varten epäonnistui.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Virhe luettaessa Amiibo datatiedostoa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Amiibon lukeminen epäonnistui. Ohjelma odotti lukevansa %1 tavua mutta onnistui lukemaan vain %2 tavua.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Virhe luettaessa Amiibo-dataa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Amiibon dataa ei voitu lukea.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Tallenna kuvakaappaus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG-kuva (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Käynnistä</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Nopeus: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Nopeus: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Peli: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Ruutuaika: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Peli, jota yrität ladata vaatii, että dumppaat lisätiedostoja Switchistäsi ennen pelaamista. &lt;br/&gt;&lt;br/&gt;Lue ohjeet näiden tiedostojen dumppaamiseen tältä wiki-sivulta: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Haluatko palata pelivalikkoon? Jatkaminen voi johtaa pelin kaatumiseen, tallennustiedostojen korruptoitumiseen tai muihin bugeihin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu ei löytänyt Switchin järjestelmätiedostoja: %1.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu ei löytänyt Switchin järjestelmätiedostoja: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Järjestelmätiedostoja ei löytynyt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Järjestelmätiedosto puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu ei havainnut Switchin shared fontteja. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Jaettuja fontteja ei löytynyt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Shared Font puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Tuhoisa virhe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu kohtasi tuhoisan virheen, lue lokitiedosto lisätietoja varten. Löydät lokitiedoston tämän sivun avulla: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt; Halutko palata takaisin pelivalikkoon. Jatkaminen voi johtaa pelin kaatumiseen, tallennustiedostojen korruptoitumiseen tai muihin bugeihin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Tapahtui tuhoisa virhe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Vahvista avaimen uudelleenlaskenta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4690,37 +4654,37 @@ ja tee itsellesi varmuuskopiot.
Tämä poistaa automaattisesti generoidut avaimet ja ajaa avainten laskentamoduulin uudelleen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Sulakkeet puuttuvat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO puuttuu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Johdantokomponentit puuttuvat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4729,39 +4693,39 @@ Tähän voi kulua jonkin aikaa
riippuen laitteesi suorituskyvystä.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Lasketaan avaimia</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Valitse RomFS dumppauskohde</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Valitse minkä RomFS:n haluat dumpata.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Haluatko varmasti sulkea yuzun?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Haluatko varmasti lopettaa emuloinnin? Kaikki tallentamaton tiedo menetetään.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5301,7 +5265,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5400,15 +5364,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5457,8 +5416,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[ei asetettu]</translation>
</message>
@@ -5469,10 +5428,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Akseli %1%2</translation>
</message>
@@ -5483,9 +5442,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[tuntematon]</translation>
</message>
@@ -5611,76 +5570,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[ei käytössä]</translation>
</message>
diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts
index 4206c5b1d..43a8db614 100644
--- a/dist/languages/fr.ts
+++ b/dist/languages/fr.ts
@@ -61,22 +61,22 @@ p, li { white-space: pre-wrap; }&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot;
<translation>Annuler</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Touchez le coin supérieur gauche&lt;br&gt;de votre pavé tactile.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Touchez le coin supérieur gauche&lt;br&gt; de votre pavé tactile.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configuration terminée !</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -271,7 +271,7 @@ p, li { white-space: pre-wrap; }&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot;
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="52"/>
<source>Unsafe</source>
- <translation>Peu sûr</translation>
+ <translation>Risqué</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="63"/>
@@ -898,49 +898,49 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Mettre à zéro le cache des métadonnées</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Sélectionner le répertoire NAND émulé...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Sélectionner le répertoire SD émulé...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Sélectionner le chemin de la cartouche de jeu...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Sélectionner le répertoire d&apos;extraction...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Sélectionner le répertoire de mod...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Le cache des métadonnées est déjà vide.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>L&apos;opération s&apos;est terminée avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Le cache des métadonnées n&apos;a pas pu être supprimé. Il pourrait être utilisé ou non-existant.</translation>
</message>
@@ -1001,36 +1001,46 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Confirmer la sortie pendent l&apos;émulation en cours</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Demander un utilisateur au lancement d&apos;un jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Mettre en pause l’émulation lorsque mis en arrière plan </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation>Couper le son en arrière-plan</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Cacher la souris en cas d&apos;inavtivité</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Réinitialiser Tous les Paramètres</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Ceci réinitialise tout les paramètres et supprime toutes les configurations par jeu. Cela ne va pas supprimer les répertoires de jeu, les profils, ou les profils d&apos;entrée. Continuer ?</translation>
</message>
@@ -1418,86 +1428,6 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
<translation>[En attente]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Moins</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>Invalide</translation>
@@ -1907,7 +1837,7 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Stick Gauche</translation>
</message>
@@ -2001,14 +1931,14 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2027,7 +1957,7 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus</translation>
</message>
@@ -2040,15 +1970,15 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2105,225 +2035,230 @@ Cette option améliore la vitesse en réduisant la précision des instructions f
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Stick Droit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Effacer</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[non défini]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Bouton d&apos;activation</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Inverser les boutons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Inverser l&apos;axe</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Définir le seuil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Choisissez une valeur entre 0% et 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation>Définir le seuil du gyroscope</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Mapper le stick analogique</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Après avoir appuyé sur OK, bougez d&apos;abord votre joystick horizontalement, puis verticalement.
Pour inverser les axes, bougez d&apos;abord votre joystick verticalement, puis horizontalement.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Zone morte: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modification de la course: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Deux Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon de gauche</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon de droit</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Mode Portable</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Manette GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poké Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Manette NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Manette SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Manette N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Stick de contrôle </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Secouez !</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[en attente]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nouveau Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Entrez un nom de profil :</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Créer un profil d&apos;entrée </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Le nom de profil donné est invalide !</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Échec de la création du profil d&apos;entrée &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Supprimer le profil d&apos;entrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Échec de la suppression du profil d&apos;entrée &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Charger le profil d&apos;entrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Échec du chargement du profil d&apos;entrée &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Sauvegarder le profil d&apos;entrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Échec de la sauvegarde du profil d&apos;entrée &quot;%1&quot;</translation>
</message>
@@ -2371,7 +2306,7 @@ Pour inverser les axes, bougez d&apos;abord votre joystick verticalement, puis h
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configurer</translation>
</message>
@@ -2407,7 +2342,7 @@ Pour inverser les axes, bougez d&apos;abord votre joystick verticalement, puis h
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Tester</translation>
</message>
@@ -2422,82 +2357,82 @@ Pour inverser les axes, bougez d&apos;abord votre joystick verticalement, puis h
<translation>Retirer un serveur</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Plus d&apos;informations&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Le numéro de port contient des caractères invalides</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Le port doit être entre 0 et 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>L&apos;adresse IP n&apos;est pas valide</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Ce serveur UDP existe déjà</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Impossible d&apos;ajouter plus de 8 serveurs</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Essai</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configuration</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test réussi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Données reçues du serveur avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test échoué</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Impossible de recevoir des données valides du serveur.&lt;br&gt;Veuillez vérifier que le serveur est correctement configuré et que l&apos;adresse et le port sont corrects.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Le test UDP ou la configuration de l&apos;étalonnage est en cours.&lt;br&gt;Veuillez attendre qu&apos;ils se terminent.</translation>
</message>
@@ -3409,7 +3344,7 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce
<translation>Nouveau nom:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[appuyez sur une touche]</translation>
</message>
@@ -3624,68 +3559,73 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibration</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Joueur 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Joueur 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Joueur 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Joueur 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Joueur 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Joueur 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Joueur 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Joueur 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Paramètres</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Activer la vibration de précision</translation>
</message>
@@ -3893,818 +3833,842 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce
<translation>Temps pris pour émuler une image par seconde de la switch, sans compter le limiteur d&apos;image par seconde ou la synchronisation verticale. Pour une émulation à pleine vitesse, ceci devrait être au maximum à 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Configuration invalide détectée</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Contrôleur portable ne peut pas être utilisé en mode téléviseur. La manette Pro sera sélectionnée.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>MODE TV</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Effacer les fichiers récents</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continuer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu exécute un jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Avertissement : Le Format de jeu est dépassé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Vous utilisez un format de ROM déconstruite pour ce jeu, qui est donc un format dépassé qui à été remplacer par d&apos;autre. Par exemple les formats NCA, NAX, XCI, ou NSP. Les destinations de ROM déconstruites manque des icônes, des métadonnée et du support de mise à jour.&lt;br&gt;&lt;br&gt;Pour une explication des divers formats Switch que yuzu supporte, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Regardez dans le wiki&lt;/a&gt;. Ce message ne sera pas montré une autre fois.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Erreur lors du chargement de la ROM !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Le format de la ROM n&apos;est pas supporté.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Une erreur s&apos;est produite lors de l&apos;initialisation du noyau dédié à la vidéo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu a rencontré une erreur en exécutant le cœur vidéo. Cela est généralement causé par des pilotes graphiques trop anciens. Veuillez consulter les logs pour plus d&apos;informations. Pour savoir comment accéder aux logs, veuillez vous référer à la page suivante : &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Comment partager un fichier de log &lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Erreur lors du chargement de la ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Veuillez suivre &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;le guide de démarrage rapide yuzu&lt;/a&gt; pour retransférer vos fichiers.&lt;br&gt;Vous pouvez vous référer au wiki yuzu&lt;/a&gt; ou le Discord yuzu&lt;/a&gt; pour de l&apos;assistance.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Une erreur inconnue est survenue. Veuillez consulter le journal des logs pour plus de détails.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Enregistrer les données</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Donnés du Mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Erreur dans l&apos;ouverture du dossier %1.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Le dossier n&apos;existe pas !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Erreur lors de l&apos;ouverture des Shader Cache Transferable</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Impossible de créer le dossier de cache du shader pour ce jeu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Contenus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Mise à jour</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Supprimer l&apos;entrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Supprimer le jeu installé %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Supprimé avec succès</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Suppression du jeu de base installé avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Erreur lors de la suppression %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Le jeu de base n&apos;est pas installé dans la NAND et ne peut pas être supprimé.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Suppression de la mise à jour installée avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Il n&apos;y a pas de mise à jour installée pour ce titre.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Il n&apos;y a pas de DLC installé pour ce titre.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Suppression de %1 DLC installé(s) avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Supprimer la Cache OpenGL de Shader Transférable?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Supprimer la Cache Vulkan de Shader Transférable?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Supprimer Toutes les Caches de Shader Transférable?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Supprimer la configuration personnalisée du jeu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Supprimer fichier</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Erreur lors de la suppression du cache de shader transférable</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Un shader cache pour ce titre n&apos;existe pas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Suppression du cache de shader transférable avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Échec de la suppression du cache de shader transférable.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Erreur durant la Suppression des Caches de Shader Transférable</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Suppression des caches de shader transférable effectuée avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Impossible de supprimer le dossier de la cache de shader transférable.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Erreur lors de la suppression de la configuration personnalisée</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Il n&apos;existe pas de configuration personnalisée pour ce titre.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Suppression de la configuration de jeu personnalisée avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Échec de la suppression de la configuration personnalisée du jeu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>L&apos;extraction de la RomFS a échoué !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Une erreur s&apos;est produite lors de la copie des fichiers RomFS ou l&apos;utilisateur a annulé l&apos;opération.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Plein</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Squelette</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Sélectionnez le mode d&apos;extraction de la RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Veuillez sélectionner la manière dont vous souhaitez que le fichier RomFS soit extrait.&lt;br&gt;Full copiera tous les fichiers dans le nouveau répertoire, tandis que&lt;br&gt;skeleton créera uniquement la structure de répertoires.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>Il n&apos;y a pas assez d&apos;espace libre dans %1 pour extraire la RomFS. Veuillez libérer de l&apos;espace ou sélectionner un autre dossier d&apos;extraction dans Émulation &gt; Configuration &gt; Système &gt; Système de fichier &gt; Extraire la racine</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extraction de la RomFS ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extraction de la RomFS réussi !</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>L&apos;opération s&apos;est déroulée avec succès.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Erreur lors de l&apos;ouverture %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Sélectionner un répertoire</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Propriétés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Les propriétés du jeu n&apos;ont pas pu être chargées.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Exécutable Switch (%1);;Tous les fichiers (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Charger un fichier</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Ouvrir le dossier des ROM extraites</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Destination sélectionnée invalide</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Le répertoire que vous avez sélectionné ne contient pas de fichier &quot;main&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Fichier Switch installable (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Installer les fichiers</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n fichier restant</numerusform><numerusform>%n fichiers restants</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installation du fichier &quot;%1&quot; ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Résultats d&apos;installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Pour éviter d&apos;éventuels conflits, nous déconseillons aux utilisateurs d&apos;installer des jeux de base sur la NAND.
Veuillez n&apos;utiliser cette fonctionnalité que pour installer des mises à jour et des DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n fichier a été nouvellement installé</numerusform><numerusform>%n fichiers ont été nouvellement installés</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n fichier a été écrasé</numerusform><numerusform>%n fichiers ont été écrasés</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n fichier n&apos;a pas pu être installé</numerusform><numerusform>%n fichiers n&apos;ont pas pu être installés</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Application Système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Archive Système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Mise à jour de l&apos;application système</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Paquet micrologiciel (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Paquet micrologiciel (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Mise à jour de jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC de jeu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Titre Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Sélectionner le type d&apos;installation du NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Veuillez sélectionner le type de titre auquel vous voulez installer ce NCA :
(Dans la plupart des cas, le titre par défaut : &apos;Jeu&apos; est correct.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Échec de l&apos;installation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Le type de titre que vous avez sélectionné pour le NCA n&apos;est pas valide.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Fichier non trouvé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Fichier &quot;%1&quot; non trouvé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Compte yuzu manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Pour soumettre un test de compatibilité pour un jeu, vous devez lier votre compte yuzu.&lt;br&gt;&lt;br/&gt;Pour lier votre compte yuzu, aller à Emulation &amp;gt; Configuration&amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Erreur lors de l&apos;ouverture de l&apos;URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Impossible d&apos;ouvrir l&apos;URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Enregistrement TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Ecraser le fichier du joueur 1 ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Configuration invalide détectée</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Contrôleur portable ne peut pas être utilisé en mode téléviseur. La manette Pro sera sélectionnée.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation>Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Fichier Amiibo (%1);; Tous les fichiers (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Charger un Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Erreur lors de l&apos;ouverture du fichier de données Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Impossible d&apos;ouvrir le fichier Amiibo &quot;%1&quot; à lire.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Erreur lors de la lecture du fichier de données Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Impossible de lire entièrement les données Amiibo. On s&apos;attend à lire %1 octets, mais il n&apos;a pu lire que %2 octets</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Erreur lors du chargement des données Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Impossible de charger les données Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Capture d&apos;écran</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Image PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Etat du TAS : En cours d&apos;exécution %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Etat du TAS : Enregistrement %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Etat du TAS : Inactif %1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Etat du TAS : Invalide</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Stopper l&apos;exécution</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Stopper l&apos;en&amp;registrement</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>En&amp;registrer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Compilation: %n shader</numerusform><numerusform>Compilation: %n shaders</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Échelle : %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Vitesse : %1% / %2% </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Vitesse : %1% </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Jeu: %1 IPS (Débloqué)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Jeu : %1 FPS </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame : %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU HAUT</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTRÊME</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU ERREUR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>PLUS PROCHE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINÉAIRE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICUBIQUE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIEN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>AUCUN AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Le jeu que vous essayez de charger a besoin de fichiers additionnels que vous devez extraire depuis votre Switch avant de jouer.&lt;br/&gt;&lt;br/&gt;Pour plus d&apos;information sur l&apos;extraction de ces fichiers, veuillez consulter la page du wiki suivante : &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Extraction des archives système et des Shared Fonts depuis la Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Voulez-vous quitter la liste des jeux ? Une émulation continue peut entraîner des crashs, la corruption de données de sauvegarde ou d’autres bugs.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu n&apos;a pas été capable de localiser un système d&apos;archive Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu n&apos;a pas été capable de localiser un système d&apos;archive Switch. %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Archive système introuvable</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Archive Système Manquante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>Yuzu n&apos;a pas été capable de localiser les polices partagées de la Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Les polices partagées non pas été trouvées</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Polices Partagée Manquante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Erreur fatale</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu a rencontré une erreur fatale, veuillez consulter les logs pour plus de détails. Pour plus d&apos;informations sur l&apos;accès aux logs, veuillez consulter la page suivante : &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt; Comment télécharger le fichier des logs &lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Voulez-vous quitter la liste des jeux ? Une émulation continue peut entraîner des crashs, la corruption de données de sauvegarde ou d’autres bugs.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Erreur Fatale rencontrée</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmer la réinstallation de la clé</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4721,37 +4685,37 @@ et éventuellement faites des sauvegardes.
Cela supprimera vos fichiers de clé générés automatiquement et ré exécutera le module d&apos;installation de clé.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Fusibles manquants</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO manquant</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Composants de dérivation manquants</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Les clés de chiffrement sont manquantes. &lt;br&gt;Veuillez suivre &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;le guide de démarrage rapide yuzu&lt;/a&gt; pour obtenir tous vos clés, firmware et jeux.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4760,39 +4724,39 @@ Cela peut prendre jusqu&apos;à une minute en fonction
des performances de votre système.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Installation des clés</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Sélectionner la cible d&apos;extraction du RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Veuillez sélectionner quel RomFS vous voulez extraire.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Êtes vous sûr de vouloir fermer yuzu ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Êtes-vous sûr d&apos;arrêter l&apos;émulation ? Tout progrès non enregistré sera perdu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5336,8 +5300,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Charger un &amp;Amiibo</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5439,15 +5403,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>Démarrer/Pause </translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>En charge</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5496,8 +5455,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[non défini]</translation>
</message>
@@ -5508,10 +5467,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Axe %1%2</translation>
</message>
@@ -5522,9 +5481,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[inconnu]</translation>
</message>
@@ -5650,76 +5609,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Tactile</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>Molette</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>Reculer</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>Avancer</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>Tâche</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>Extra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[non défini]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[invalide]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Chapeau %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Axe %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Axe %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Mouvement %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Bouton %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[inutilisé]</translation>
</message>
diff --git a/dist/languages/id.ts b/dist/languages/id.ts
index 422bf299b..bfec8f509 100644
--- a/dist/languages/id.ts
+++ b/dist/languages/id.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Batalkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Sentuh pojok kiri atas &lt;br&gt;dari touchpad anda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Sekarang sentuh pojok kanan bawah &lt;br&gt;dari touchpad anda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfigurasi selesai!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -651,7 +651,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="217"/>
<source>Enable all Controller Types</source>
- <translation>Nyalakan semua Tipe Kontroler</translation>
+ <translation>Nyalakan semua Jenis Kontroler</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="232"/>
@@ -873,49 +873,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Atur Ulang Cache Metadata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Pilih Direktori NAND yang Diemulasikan...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Pilih Direktori SD yang Diemulasikan...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Pilih Jalur Kartu Permainan...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Pilih Jalur Dump...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Pilih Direktori Pemuatan Mod...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Cache metadata sudah kosong.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operasi selesai dengan sukses.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Cache metadata tidak dapat dihapus. Mungkin sedang dipakai atau memang tidak ada.</translation>
</message>
@@ -976,36 +976,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Konfirmasi jika ingin keluar saat emulasi berjalan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Tanyakan pengguna ketika memulai permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Jeda pengemulasian ketika berada di latar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Sembunyikan mouse saat tidak aktif</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Atur Ulang Semua Pengaturan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation type="unfinished"/>
</message>
@@ -1393,86 +1403,6 @@ p, li { white-space: pre-wrap; }
<translation>[menunggu]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Kurang</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Tambah</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1882,7 +1812,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Stik Kiri</translation>
</message>
@@ -1976,14 +1906,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2002,7 +1932,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Tambah</translation>
</message>
@@ -2015,15 +1945,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2080,225 +2010,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Stik Kanan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Bersihkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[belum diatur]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Atur tombol</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Balikkan tombol</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Balikkan poros</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Atur batasan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Pilih sebuah angka diantara 0% dan 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Petakan Stik Analog</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Setelah menekan OK, pertama gerakkan joystik secara mendatar, lalu tegak lurus.
Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu mendatar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Titik Mati: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Rentang Pengubah: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Kontroler Pro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joycon Dual</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon Kiri</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon Kanan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Jinjing</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Kontroler GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Kontroler NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Kontroler SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Kontroler N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Mulai / Jeda</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Stik Kendali</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Getarkan!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[menunggu]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Profil Baru</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Masukkan nama profil:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Ciptakan Profil Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Nama profil yang diberi tidak sah!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Gagal membuat profil masukan &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Hapus Profil Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Gagal menghapus profil masukan &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Muat Profil Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Gagal memuat profil masukan &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Simpat Profil Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Gagal menyimpan profil masukan &quot;%1&quot;</translation>
</message>
@@ -2346,7 +2281,7 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfigurasi</translation>
</message>
@@ -2382,7 +2317,7 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Uji coba</translation>
</message>
@@ -2397,82 +2332,82 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda
<translation>Hapus Server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Pelajari lebih lanjut&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Terdapat karakter tidak sah di angka port</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port harus berada dalam jangkauan 0 dan 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>Alamat IP tidak sah</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Server UDP ini sudah ada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Tidak dapat menambah lebih dari 8 server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Menguji</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Mengkonfigur</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Tes Berhasil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Berhasil menerima data dari server.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Uji coba Gagal</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Tidak dapat menerima data yang sah dari server.&lt;br&gt;Mohon periksa bahwa server telah diatur dengan benar dan alamat dan port sudah sesuai.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Uji coba UDP atau kalibrasi konfigurasi sedang berjalan.&lt;br&gt;Mohon tunggu hingga selesai.</translation>
</message>
@@ -3338,7 +3273,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="80"/>
<source>Button</source>
- <translation type="unfinished"/>
+ <translation>Tombol</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="80"/>
@@ -3360,30 +3295,30 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="197"/>
<source>Enter the name for the new profile.</source>
- <translation type="unfinished"/>
+ <translation>Masukkan nama untuk profil baru.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="208"/>
<source>Delete Profile</source>
- <translation type="unfinished"/>
+ <translation>Hapus Profil</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="208"/>
<source>Delete profile %1?</source>
- <translation type="unfinished"/>
+ <translation>Hapus profil %%1?</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="221"/>
<source>Rename Profile</source>
- <translation type="unfinished"/>
+ <translation>Ubah Nama Profil</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="221"/>
<source>New name:</source>
- <translation type="unfinished"/>
+ <translation>Nama baru:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[tekan tombol]</translation>
</message>
@@ -3438,37 +3373,37 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="21"/>
<source>Small (32x32)</source>
- <translation type="unfinished"/>
+ <translation>Kecil (32x32)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="22"/>
<source>Standard (64x64)</source>
- <translation type="unfinished"/>
+ <translation>Standar (64x64)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="23"/>
<source>Large (128x128)</source>
- <translation type="unfinished"/>
+ <translation>Besar (128x128)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="24"/>
<source>Full Size (256x256)</source>
- <translation type="unfinished"/>
+ <translation>Ukuran Penuh (256x256)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="29"/>
<source>Small (24x24)</source>
- <translation type="unfinished"/>
+ <translation>Kecil (24x24)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="30"/>
<source>Standard (48x48)</source>
- <translation type="unfinished"/>
+ <translation>Standar (48x48)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="31"/>
<source>Large (72x72)</source>
- <translation type="unfinished"/>
+ <translation>Besar (72x72)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="36"/>
@@ -3478,7 +3413,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="37"/>
<source>Filetype</source>
- <translation type="unfinished"/>
+ <translation>Filetype</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="38"/>
@@ -3488,7 +3423,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="39"/>
<source>Title Name</source>
- <translation type="unfinished"/>
+ <translation>Nama Judul</translation>
</message>
</context>
<context>
@@ -3541,7 +3476,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="105"/>
<source>Folder Icon Size:</source>
- <translation type="unfinished"/>
+ <translation>Ukuran Ikon Folder:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="119"/>
@@ -3556,17 +3491,17 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="150"/>
<source>Screenshots</source>
- <translation type="unfinished"/>
+ <translation>Screenshot</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="158"/>
<source>Ask Where To Save Screenshots (Windows Only)</source>
- <translation type="unfinished"/>
+ <translation>Menanya Dimana Untuk Menyimpan Screenshot (Hanya untuk Windows)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="167"/>
<source>Screenshots Path: </source>
- <translation type="unfinished"/>
+ <translation>Jalur Screenshot:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="177"/>
@@ -3576,7 +3511,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="93"/>
<source>Select Screenshots Path...</source>
- <translation type="unfinished"/>
+ <translation>Pilih Jalur Screenshot...</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="173"/>
@@ -3594,72 +3529,77 @@ Drag points to change position, or double-click table cells to edit values.</sou
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="14"/>
<source>Configure Vibration</source>
- <translation type="unfinished"/>
+ <translation>Konfigurasi Getaran</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation>Tekan tombol apapun di kontroler untuk menggetarkan kontroler.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Getaran</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Pemain 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Pemain 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Pemain 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Pemain 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Pemain 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Pemain 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Pemain 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Pemain 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Pengaturan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Nyalakan Getaran Akurat</translation>
</message>
@@ -3867,820 +3807,844 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Waktu yang diperlukan untuk mengemulasikan bingkai Switch, tak menghitung pembatas bingkai atau v-sync. Agar emulasi berkecepatan penuh, ini harus 16.67 mdtk.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Konfigurasi tidak sah terdeteksi</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Kontroller jinjing tidak bisa digunakan dalam mode dock. Kontroller Pro akan dipilih</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Bersihkan Berkas Baru-baru Ini</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Lanjutkan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Jeda</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu sedang menjalankan game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Peringatan Format Permainan yang Usang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Anda menggunakan format direktori ROM yang sudah didekonstruksi untuk permainan ini, yang mana itu merupakan format lawas yang sudah tergantikan oleh yang lain seperti NCA, NAX, XCI, atau NSP. Direktori ROM yang sudah didekonstruksi kekurangan ikon, metadata, dan dukungan pembaruan.&lt;br&gt;&lt;br&gt;Untuk penjelasan berbagai format Switch yang didukung yuzu, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;periksa wiki kami&lt;/a&gt;. Pesan ini tidak akan ditampilkan lagi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Kesalahan ketika memuat ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Format ROM tak didukung.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Terjadi kesalahan ketika menginisialisasi inti video.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
- <translation type="unfinished"/>
+ <translation>yuzu telah mengalami error saat menjalankan inti video. Ini biasanya disebabkan oleh pemicu piranti (driver) GPU yang usang, termasuk yang terintegrasi. Mohon lihat catatan untuk informasi lebih rinci. Untuk informasi cara mengakses catatan, mohon lihat halaman berikut: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Cara Mengupload Berkas Catatan&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Terjadi kesalahan yang tak diketahui. Mohon lihat catatan untuk informasi lebih rinci.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Simpan Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Gagal Membuka Folder %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Folder tak ada!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Gagal Ketika Membuka Tembolok Shader yang Dapat Ditransfer</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Konten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Perbaharui</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Hapus Masukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Tidak ada DLC yang terinstall untuk judul ini.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Hapus File</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Kesalahan Menghapus Transferable Shader Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Cache shader bagi judul ini tidak ada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Kesalahan Menghapus Konfigurasi Buatan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Pengekstrakan RomFS Gagal!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Terjadi kesalahan ketika menyalin berkas RomFS atau dibatalkan oleh pengguna.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Penuh</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Skeleton</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Pilih Mode Dump RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Mohon pilih cara RomFS akan di-dump.&lt;br&gt;FPenuh akan menyalin seluruh berkas ke dalam direktori baru sementara &lt;br&gt;jerangkong hanya akan menciptakan struktur direktorinya saja.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Mengekstrak RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Batal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Pengekstrakan RomFS Berhasil!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operasi selesai dengan sukses,</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Gagal membuka %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Pilih Direktori</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Properti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Properti permainan tak dapat dimuat.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Eksekutabel Switch (%1);;Semua Berkas (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Muat Berkas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Buka Direktori ROM Terekstrak</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Direktori Terpilih Tidak Sah</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Direktori yang Anda pilih tak memiliki berkas &apos;utama.&apos;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Install File</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Memasang berkas &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Hasil Install</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n file(s) baru diinstall
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n file(s) telah ditimpa
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n file(s) gagal di install
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplikasi Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Arsip Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Pembaruan Aplikasi Sistem</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Paket Perangkat Tegar (Tipe A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Paket Perangkat Tegar (Tipe B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Pembaruan Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC Permainan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Judul Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Pilih Tipe Pemasangan NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Mohon pilih jenis judul yang Anda ingin pasang sebagai NCA ini:
(Dalam kebanyakan kasus, pilihan bawaan &apos;Permainan&apos; tidak apa-apa`.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Gagal Memasang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Jenis judul yang Anda pilih untuk NCA tidak sah.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Berkas tak ditemukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Berkas &quot;%1&quot; tak ditemukan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Akun yuzu Hilang</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Agar dapat mengirimkan berkas uju kompatibilitas permainan, Anda harus menautkan akun yuzu Anda.&lt;br&gt;&lt;br/&gt;TUntuk mennautkan akun yuzu Anda, pergi ke Emulasi &amp;gt; Konfigurasi &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Kesalahan saat membuka URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Tidak dapat membuka URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Rekaman TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Timpa file pemain 1? </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Konfigurasi tidak sah terdeteksi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Kontroller jinjing tidak bisa digunakan dalam mode dock. Kontroller Pro akan dipilih</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Berkas Amiibo (%1);; Semua Berkas (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Muat Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Gagal membuka berkas data Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Tak dapat membuka berkas Amiibo &quot;%1&quot; untuk dibaca.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Gagal membaca berkas data Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Tak dapat membaca data Amiibo sepenuhnya. Diperkirakan membaca %1 bita, namun hanya terbaca %2 bita.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Gagal memuat data Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Tak dapat memuat data Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Tangkapan Layar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Berkas PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Status TAS: Berjalan %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Status TAS: Merekam %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Status TAS: Diam %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Status TAS: Tidak Valid</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Matikan</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Mulai</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Berhenti Mer&amp;ekam</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>R&amp;ekam</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Membangun: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Skala: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Kecepatan: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Kecepatan: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Permainan: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU TINGGI</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EKSTRIM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>KESALAHAN GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>NEAREST</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICUBIC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>TANPA AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Kesalahan Fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4691,76 +4655,76 @@ This will delete your autogenerated key files and re-run the key derivation modu
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Kehilangan BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Kehilangan BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- Kehilangan PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Apakah anda yakin ingin menutup yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5298,7 +5262,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5397,15 +5361,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5454,8 +5413,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[belum diatur]</translation>
</message>
@@ -5466,10 +5425,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation type="unfinished"/>
</message>
@@ -5480,9 +5439,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation type="unfinished"/>
</message>
@@ -5608,76 +5567,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Sentuh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Gerakan %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation type="unfinished"/>
</message>
diff --git a/dist/languages/it.ts b/dist/languages/it.ts
index 3a2f3cd49..5476c8567 100644
--- a/dist/languages/it.ts
+++ b/dist/languages/it.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Annulla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Tocca l&apos;angolo in alto a sinistra &lt;br&gt;del touchpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Adesso tocca l&apos;angolo in basso a destra &lt;br&gt;del touchpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configurazione completata!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -896,49 +896,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Elimina Cache dei Metadati</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Seleziona Cartella NAND Emulata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Seleziona Cartella Scheda SD Emulata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Seleziona Percorso Cartuccia di Gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Seleziona Cartella di Estrazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Seleziona Cartella per il Caricamento delle Mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>La cache dei metadati è già vuota.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>L&apos;operazione è stata completata con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Impossibile eliminare la cache dei metadati. Potrebbe essere in uso o inesistente.</translation>
</message>
@@ -999,36 +999,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Richiedi conferma di uscire mentre l&apos;emulazione è in corso</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Richiedi utente all&apos;avvio di un gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausa emulazione quando in background</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Nascondi il puntatore del mouse se inattivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Resetta tutte le impostazioni</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Questo resetta tutte le impostazioni e rimuove tutte le configurazioni per gioco. Questo, non cancellerà le cartelle di gioco, i profili o i profili di input. Vuoi Procedere ?</translation>
</message>
@@ -1416,86 +1426,6 @@ p, li { white-space: pre-wrap; }
<translation>[in attesa]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Meno</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Più</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1905,7 +1835,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Stick Sinistro</translation>
</message>
@@ -1999,14 +1929,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2025,7 +1955,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Più</translation>
</message>
@@ -2038,15 +1968,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2103,225 +2033,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Stick Destro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Cancella</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[non impostato]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Premi il bottone</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Inverti assi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Mappa la levetta analogica</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Dopo aver premuto OK, prima muovi la levetta orizzontalmente, e poi verticalmente.
Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalmente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Zona morta: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modifica raggio: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Due Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon sinistro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon destro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Portatile</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Controller GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Inizia / Interrompi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Levetta di Controllo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>Levetta C</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Scuoti!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[in attesa]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nuovo Profilo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Inserisci un nome profilo:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Crea un profilo di Input</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Il nome profilo dato non è valido!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Impossibile creare il profilo di input &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Elimina un profilo di Input</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Impossibile eliminare il profilo di input &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Carica un profilo di Input</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Impossibile caricare il profilo di input &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Salva un profilo di Input</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Impossibile creare il profilo di input &quot;%1&quot;</translation>
</message>
@@ -2369,7 +2304,7 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configura</translation>
</message>
@@ -2405,7 +2340,7 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2420,82 +2355,82 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme
<translation>Rimuovi un Server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Per saperne di più&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Il numero di porta ha caratteri non validi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>La valore della porta deve essere compreso tra 0 e 65353 inclusi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>Indirizzo IP non valido</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Questo server UDP esiste già</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Impossibile aggiungere più di 8 server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configurando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test riuscito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Ricevuti con successo dati dal server.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test fallito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Impossibile ricevere dati validi dal server.&lt;br&gt; Verificare che il server sia impostato correttamente e che indirizzo e porta siano corretti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>È in corso il test UDP o la configurazione della calibrazione,&lt;br&gt; attendere che finiscano.</translation>
</message>
@@ -3407,7 +3342,7 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab
<translation>Nuovo nome:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[premi pulsante]</translation>
</message>
@@ -3622,68 +3557,73 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibrazione</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Giocatore 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Giocatore 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Giocatore 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Giocatore 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Giocatore 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Giocatore 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Giocatore 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Giocatore 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Impostazioni</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Abilita la Vibrazione Accurata</translation>
</message>
@@ -3892,819 +3832,843 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab
Per un&apos;emulazione alla massima velocità, il valore dev&apos;essere al massimo 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Trovata configurazione invalida</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Il controller Handheld non può essere utilizzato in modalità docked. Verrà selezionato il controller Pro.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Cancella i File Recenti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continua</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Avviso Formato di Gioco Obsoleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Stai usando una cartella con dentro una ROM decostruita come formato per avviare questo gioco, è un formato obsoleto ed è stato sostituito da altri come NCA, NAX, XCI o NSP. Le ROM decostruite non hanno icone, metadata e non supportano gli aggiornamenti. &lt;br&gt;&lt;br&gt;Per una spiegazione sui vari formati di Switch che yuzu supporta, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;controlla la nostra wiki&lt;/a&gt;. Questo messaggio non verrà più mostrato.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Errore nel caricamento della ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Il formato della ROM non è supportato.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>E&apos; stato riscontrato un errore nell&apos;inizializzazione del core video.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Errore nel caricamento della ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Per favore segui &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;la guida rapida di yuzu&lt;/a&gt; per rifare il dump dei file.&lt;br&gt;Puoi fare riferimento alla wiki di yuzu&lt;/a&gt; o al canale Discord di yuzu&lt;/a&gt; per aiuto.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>E&apos; stato riscontrato un errore sconosciuto. Visualizza il log per maggiori dettagli.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Dati di Salvataggio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Dati delle Mod</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Errore nell&apos;Apertura della Cartella %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>La cartella non esiste!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Errore nell&apos;Apertura della Cache Shader Trasferibile</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Contenuti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Aggiorna</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Rimuovi voce</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Rimuovere i giochi installati %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Rimosso con successo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Rimosso con successo il gioco base installato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Errore durante la rimozione %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Il gioco base non è installato su NAND e non può essere rimosso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Aggiornamento rimosso on successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Non c&apos;è alcun aggiornamento installato per questo gioco.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Non c&apos;è alcun DLC installato per questo gioco.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Rimossi con successo %1 DLC installati.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Rimuovere la configurazione personalizzata del gioco?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Rimuovi file?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Errore rimuovendo la shader cache trasferibile.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Una cache di shader per questo titolo non esiste.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Rimossa con successo la shader cache trasferibile.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Impossibile rimuovere la cache dello shader trasferibile.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Errore rimuovendo la configurazione personalizzata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Una configurazione personalizzata per questo gioco non esiste.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Rimossa con successo la configurazione personalizzata del gioco.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Impossibile rimuovere la configurazione personalizzata del gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Estrazione RomFS Fallita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>C&apos;è stato un errore nella copia dei file del RomFS o l&apos;operazione è stata annullata dall&apos;utente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Scheletro.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Seleziona Modalità Estrazione RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Seleziona come vorresti estrarre il RomFS. &lt;br&gt;Completo copierà tutti i file in una nuova cartella mentre&lt;br&gt;scheletro creerà solamente le cartelle e le sottocartelle.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Estrazione RomFS in corso...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Annulla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Estrazione RomFS Riuscita!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>L&apos;operazione è stata completata con successo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Errore nell&apos;Apertura di %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Seleziona Cartella</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Proprietà</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Le proprietà del gioco non sono potute essere caricate.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Eseguibile Switch (%1);;Tutti i File (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Carica File</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Apri Cartella ROM Estratta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Cartella Selezionata Non Valida</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>La cartella che hai selezionato non contiene un file &quot;main&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>File installabili Switch (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Installa files</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installazione del file &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Installa risultati</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Per evitare possibli conflitti, scoraggiamo gli utenti dall&apos;installare giochi base su NAND.
Per favore, usare questa funzione solo per installare aggiornamenti e DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Applicazione di Sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Archivio di Sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Aggiornamento Applicazione di Sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Pacchetto Firmware (Tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Pacchetto Firmware (Tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Aggiornamento di Gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC Gioco</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Titolo Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Seleziona il Tipo di Installazione NCA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Seleziona il tipo del file NCA da installare:
(Nella maggior parte dei casi, il predefinito &apos;Gioco&apos; va bene.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Installazione Fallita</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Il tipo che hai selezionato per l&apos;NCA non è valido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>File non trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>File &quot;%1&quot; non trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Account di yuzu non trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Per segnalare la compatibilità di un gioco, devi collegare il tuo account yuzu. &lt;br&gt;&lt;br/&gt;Per collegare il tuo account yuzu, vai su Emulazione &amp;gt;
Configurazione &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Errore aprendo l&apos;URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Impossibile aprire l&apos;URL &quot;% 1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Vuoi sovrascrivere lo script del giocatore 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Trovata configurazione invalida</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Il controller Handheld non può essere utilizzato in modalità docked. Verrà selezionato il controller Pro.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>File Amiibo (%1);; Tutti I File (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Carica Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Errore nell&apos;apertura del file dati Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Impossibile aprire e leggere il file Amiibo &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Errore nella lettura dei dati del file Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Impossibile leggere tutti i dati dell&apos;Amiibo. E&apos; stato possibile leggere solamente %2 byte di %1.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Errore nel caricamento dei dati dell&apos;Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Impossibile caricare i dati dell&apos;Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Cattura Screenshot</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Immagine PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Avvia</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Velocità: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Velocità: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Gioco: %1 FPS (Sbloccati)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Gioco: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMALE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU ESTREMA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>ERRORE GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Il gioco che stai provando a caricare richiede ulteriori file che devono essere estratti dalla tua Switch prima di poter giocare. &lt;br/&gt;&lt;br/&gt;Per maggiori informazioni sull&apos;estrazione di questi file, visualizza la seguente pagina della wiki: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Estrazione di Archivi di Sistema e Font Condivisi da una Console Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vuoi uscire e tornare alla lista dei giochi? Continuare l&apos;emulazione potrebbe risultare in crash, salvataggi corrotti o altri bug.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu non ha potuto individuare un archivio di sistema della Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu non ha potuto individuare un archivio di sistema della Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Archivio di Sistema Non Trovato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Archivio di Sistema Mancante</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu non ha potuto individuare i font condivisi della Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Font Condivisi Non Trovati</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Font Condivisi Mancanti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Errore Fatale</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu ha riscontrato un errore fatale, visualizza il log per maggiori dettagli. Per maggiori informazioni su come accedere al log, visualizza la seguente pagina: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Come Caricare Il File Log&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vuoi uscire e tornare alla lista dei giochi? Continuare l&apos;emulazione potrebbe risultare in crash, salvataggi corrotti o altri bug.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Errore Fatale riscontrato</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Conferma Riderivazione Chiave</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4721,37 +4685,37 @@ e facoltativamente fai dei backup.
Questo eliminerà i tuoi file di chiavi autogenerati e ri-avvierà il processo di derivazione delle chiavi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Fusi mancanti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - Manca BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Manca BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- Manca PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Componenti di derivazione mancanti</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4760,39 +4724,39 @@ Questa operazione potrebbe durare fino a un minuto in
base alle prestazioni del tuo sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Derivazione Chiavi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Seleziona Target dell&apos;Estrazione del RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Seleziona quale RomFS vorresti estrarre.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Sei sicuro di voler chiudere yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Sei sicuro di voler fermare l&apos;emulazione? Tutti i progressi non salvati verranno perduti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5334,8 +5298,8 @@ Iniziale.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Carica &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5437,15 +5401,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>INIZIA/INTERROMPI</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5494,8 +5453,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[non impostato]</translation>
</message>
@@ -5506,10 +5465,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Asse %1%2</translation>
</message>
@@ -5520,9 +5479,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[sconosciuto]</translation>
</message>
@@ -5648,76 +5607,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Touch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[inutilizzato]</translation>
</message>
diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts
index 2d9b8942f..dd5a10cde 100644
--- a/dist/languages/ja_JP.ts
+++ b/dist/languages/ja_JP.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>タッチパッドの左上を&lt;br&gt;タッチして下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>次にタッチパッドの右下を&lt;br&gt;タッチして下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>設定が完了しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -321,7 +321,9 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;このオプションは、不正確な丸めモードで実行することにより、32ビットASIMD浮動小数点関数の速度を向上させます。&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="125"/>
@@ -333,7 +335,9 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;このオプションは、非数チェックをなくすことにより速度を向上させます。一部の浮動小数点演算命令の精度が低下することにご注意ください。&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="137"/>
@@ -345,7 +349,9 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves speed by eliminating a safety check before every memory read/write in guest. Disabling it may allow a game to read/write the emulator's memory.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;このオプションは、ゲストでメモリの読み書きの前に行われる安全チェックをなくすことで、速度を向上させます。このオプションを無効にすると、ゲームがエミュレータのメモリを読み書きできるようになる場合があります。&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="149"/>
@@ -505,7 +511,11 @@ p, li { white-space: pre-wrap; }
&lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all memory accesses to use Software MMU Emulation.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;この最適化により、ゲストプログラムによるメモリアクセスが高速化されます。&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;有効にすると、ゲストメモリの読み書きがメモリに直接行われ、ホストのMMUを使用するようになります。&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;無効にすると、すべてのメモリアクセスはソフトウェアMMUエミュレーションを使用するようになります。&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="147"/>
@@ -588,17 +598,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="114"/>
<source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
- <translation type="unfinished"/>
+ <translation>チェックすると、ディスクシェーダーキャッシュまたはゲームからオリジナルのアセンブラーシェーダーをすべてダンプします</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="117"/>
<source>Dump Game Shaders</source>
- <translation type="unfinished"/>
+ <translation>ゲームシェーダーをダンプ</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="127"/>
<source>When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower</source>
- <translation type="unfinished"/>
+ <translation>チェックすると、マクロのJust In Timeコンパイラが無効になります。有効にすると、ゲームの動作が遅くなります。</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="130"/>
@@ -618,7 +628,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="147"/>
<source>When checked, it executes shaders without loop logic changes</source>
- <translation type="unfinished"/>
+ <translation>チェックすると、ループロジックを変更せずにシェーダーを実行します。</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="150"/>
@@ -890,49 +900,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>メタデータのキャッシュをクリア</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>NANDディレクトリを選択...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>SDカードディレクトリを選択...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>ゲームカードのパスを選択...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>ダンプディレクトリを選択...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Mod読込元ディレクトリを選択...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>メタデータのキャッシュはすでに空です。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>処理に成功しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>メタデータのキャッシュを削除できませんでした。使用中か存在していない可能性があります。</translation>
</message>
@@ -954,7 +964,7 @@ p, li { white-space: pre-wrap; }
<location filename="../../src/yuzu/configuration/configure_general.ui" line="50"/>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="57"/>
<source>Use global framerate cap</source>
- <translation type="unfinished"/>
+ <translation>グローバルフレームレート上限を使用する</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="62"/>
@@ -964,12 +974,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="70"/>
<source>Requires the use of the FPS Limiter Toggle hotkey to take effect.</source>
- <translation type="unfinished"/>
+ <translation>FPS Limiter Toggle ホットキーを使用することで有効になります。</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="73"/>
<source>Framerate Cap</source>
- <translation type="unfinished"/>
+ <translation>フレームレート上限</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="95"/>
@@ -993,38 +1003,48 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>エミュレーション停止時に確認</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>ゲーム起動時に確認を表示</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>バックグラウンド時にエミュレーションを一時停止</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>非アクティブ時にマウスカーソルを隠す</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>すべての設定をリセット</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
- <translation type="unfinished"/>
+ <translation>すべての設定がリセットされ、ゲームごとの設定もすべて削除されます。ゲームディレクトリ、プロファイル、入力プロファイルは削除されません。続行しますか?</translation>
</message>
</context>
<context>
@@ -1142,47 +1162,47 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="330"/>
<source>Resolution:</source>
- <translation type="unfinished"/>
+ <translation>解像度:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="338"/>
<source>0.5X (360p/540p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.5倍 (360p/540p) [実験的]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="343"/>
<source>0.75X (540p/810p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.75倍 (540p/810p) [実験的]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="348"/>
<source>1X (720p/1080p)</source>
- <translation type="unfinished"/>
+ <translation>等倍 (720p/1080p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="353"/>
<source>2X (1440p/2160p)</source>
- <translation type="unfinished"/>
+ <translation>2倍 (1440p/2160p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="358"/>
<source>3X (2160p/3240p)</source>
- <translation type="unfinished"/>
+ <translation>3倍 (2160p/3240p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="363"/>
<source>4X (2880p/4320p)</source>
- <translation type="unfinished"/>
+ <translation>4倍 (2880p/4320p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="368"/>
<source>5X (3600p/5400p)</source>
- <translation type="unfinished"/>
+ <translation>5倍 (3600p/5400p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="373"/>
<source>6X (4320p/6480p)</source>
- <translation type="unfinished"/>
+ <translation>6倍 (4320p/6480p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="399"/>
@@ -1222,7 +1242,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="458"/>
<source>Anti-Aliasing Method:</source>
- <translation type="unfinished"/>
+ <translation>アンチエイリアス方式:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="466"/>
@@ -1232,7 +1252,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="471"/>
<source>FXAA</source>
- <translation type="unfinished"/>
+ <translation>FXAA</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="506"/>
@@ -1384,7 +1404,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
<source>Controller Hotkey</source>
- <translation type="unfinished"/>
+ <translation>コントローラホットキー</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="124"/>
@@ -1410,89 +1430,9 @@ p, li { white-space: pre-wrap; }
<translation>[入力待ち]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>+</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
- <translation type="unfinished"/>
+ <translation>無効</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="329"/>
@@ -1512,12 +1452,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="352"/>
<source>The default button sequence is already assigned to: %1</source>
- <translation type="unfinished"/>
+ <translation>デフォルトのボタン配列はすでに %1 に割り当てられています。</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="366"/>
<source>The default key sequence is already assigned to: %1</source>
- <translation>デフォルトの組合せは既に次の操作に割り当てられています:%1</translation>
+ <translation>デフォルトの組合せはすでに %1 に割り当てられています。</translation>
</message>
</context>
<context>
@@ -1857,7 +1797,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2708"/>
<source>Motion / Touch</source>
- <translation>モーション / タッチ</translation>
+ <translation>モーション / タッチ</translation>
</message>
</context>
<context>
@@ -1899,7 +1839,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Lスティック</translation>
</message>
@@ -1993,14 +1933,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2008,20 +1948,20 @@ p, li { white-space: pre-wrap; }
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1426"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1465"/>
<source>Minus</source>
- <translation>-</translation>
+ <translation>-</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1475"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1514"/>
<source>Capture</source>
- <translation>キャプチャー</translation>
+ <translation>キャプチャ</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
- <translation>+</translation>
+ <translation>+</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1594"/>
@@ -2032,15 +1972,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2097,225 +2037,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Rスティック</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>クリア</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[未設定]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
- <translation type="unfinished"/>
+ <translation>ボタンを反転</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>軸を反転</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>しきい値を設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>0%から100%の間の値を選択してください</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>ジャイロのしきい値を設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>アナログスティックをマップ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>OKを押したあと, まずジョイスティックを水平方向に動かし, 次に垂直方向に動かしてください.
軸を反転させる場合は, 最初に垂直方向に動かし, 次に水平方向に動かしてください.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>デッドゾーン:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>変更範囲:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Proコントローラ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joy-Con(L/R)</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joy-Con(L)</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joy-Con(R)</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>携帯モード</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>ゲームキューブコントローラ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>Cスティック</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[待機中]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>新規プロファイル</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>プロファイル名を入力:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>入力プロファイルを作成</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>プロファイル名が無効です!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>入力プロファイル &quot;%1&quot; の作成に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>入力プロファイルを削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>入力プロファイル &quot;%1&quot; の削除に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>入力プロファイルをロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>入力プロファイル &quot;%1&quot; のロードに失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>入力プロファイルをセーブ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>入力プロファイル &quot;%1&quot; のセーブに失敗しました</translation>
</message>
@@ -2363,7 +2308,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>設定</translation>
</message>
@@ -2385,12 +2330,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="134"/>
<source>Server:</source>
- <translation>サーバー:</translation>
+ <translation>サーバー:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="161"/>
<source>Port:</source>
- <translation>ポート:</translation>
+ <translation>ポート:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="188"/>
@@ -2399,7 +2344,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>テスト</translation>
</message>
@@ -2414,82 +2359,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation>サーバを削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;詳細情報&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>ポート番号に無効な文字が含まれています</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>ポート番号は0から65353の間で設定してください</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IPアドレスが無効です</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>このUDPサーバはすでに存在してます</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>8個以上のサーバを追加することはできません</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
- <translation>テスト中...</translation>
+ <translation>テスト中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
- <translation>設定中...</translation>
+ <translation>設定中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>テスト成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>サーバーからのデータ受信に成功しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>テスト失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>有効なデータを受信できませんでした。&lt;br&gt;サーバーが正しくセットアップされ、アドレスとポートが正しいことを確認してください。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDPテストまたはキャリブレーション実行中です。&lt;br&gt;完了までお待ちください。</translation>
</message>
@@ -2597,7 +2542,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="70"/>
<source>Adv. Graphics</source>
- <translation>グラフィック(高度)</translation>
+ <translation>高度なグラフィック</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="71"/>
@@ -2701,37 +2646,37 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="73"/>
<source>Enter Username</source>
- <translation>ユーザー名</translation>
+ <translation>ユーザ名</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="136"/>
<source>Users</source>
- <translation>ユーザー</translation>
+ <translation>ユーザ</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="198"/>
<source>Enter a username for the new user:</source>
- <translation>新しいユーザーのユーザー名を入力:</translation>
+ <translation>新しいユーザのユーザ名を入力:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="218"/>
<source>Enter a new username:</source>
- <translation>新しいユーザー名を入力:</translation>
+ <translation>新しいユーザ名を入力:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="243"/>
<source>Confirm Delete</source>
- <translation>ユーザーの削除</translation>
+ <translation>ユーザの削除</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="244"/>
<source>You are about to delete user with name &quot;%1&quot;. Are you sure?</source>
- <translation>ユーザー ”%1” を削除しようとしています。続行しますか?</translation>
+ <translation>ユーザ ”%1” を削除しようとしています。続行しますか?</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="271"/>
<source>Select User Image</source>
- <translation>ユーザー画像を選択 </translation>
+ <translation>ユーザ画像を選択 </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="272"/>
@@ -2781,12 +2726,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="314"/>
<source>Error resizing user image</source>
- <translation type="unfinished"/>
+ <translation>ユーザ画像のリサイズエラー</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="315"/>
<source>Unable to resize image</source>
- <translation type="unfinished"/>
+ <translation>画像をリサイズできません</translation>
</message>
</context>
<context>
@@ -2809,7 +2754,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="33"/>
<source>Region:</source>
- <translation>地域:</translation>
+ <translation>地域:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="41"/>
@@ -3185,7 +3130,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="431"/>
<source>RNG Seed</source>
- <translation>乱数(RNG)シード値の変更</translation>
+ <translation>乱数シード値の変更</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="439"/>
@@ -3205,7 +3150,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="457"/>
<source>Console ID:</source>
- <translation>コンソールID:</translation>
+ <translation>コンソールID:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="464"/>
@@ -3401,7 +3346,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>新しいプロファイル名:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[キーを押す]</translation>
</message>
@@ -3616,68 +3561,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>振動</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>プレイヤー1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>プレイヤー2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>プレイヤー3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>プレイヤー4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>プレイヤー5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>プレイヤー6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>プレイヤー7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>プレイヤー8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>正確な振動の有効化</translation>
</message>
@@ -3885,820 +3835,844 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Switchフレームをエミュレートするのにかかる時間で、フレームリミットやV-Syncは含まれません。フルスピードエミュレーションの場合、最大で16.67ミリ秒になります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>無効な設定を検出しました</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>携帯コントローラはドックモードで使用できません. Proコントローラが選択されます.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>最近のファイルをクリア(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
- <translation type="unfinished"/>
+ <translation>再開(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>中断(&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>古いゲームフォーマットの警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>このゲームでは、分解されたROMディレクトリフォーマットを使用しています。これは、NCA、NAX、XCI、またはNSPなどに取って代わられた古いフォーマットです。分解されたROMディレクトリには、アイコン、メタデータ、およびアップデートサポートがありません。&lt;br&gt;&lt;br&gt;yuzuがサポートするSwitchフォーマットの説明については、&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;wikiをチェックしてください&lt;/a&gt;。このメッセージは二度と表示されません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>ROMロード中にエラーが発生しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>このROMフォーマットはサポートされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>ビデオコア初期化中にエラーが発生しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>ROMのロード中にエラー! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>不明なエラーが発生しました。詳細はログを確認して下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>データのセーブ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Modデータ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>”%1”フォルダを開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>フォルダが存在しません!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>シェーダキャッシュを開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>このタイトル用のシェーダキャッシュディレクトリの作成に失敗しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>コンテンツ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>アップデート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>エントリ削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>インストールされているゲーム%1を削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>削除しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>インストールされたゲームを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>%1削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>ゲームはNANDにインストールされていないため、削除できません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>インストールされたアップデートを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>このタイトルのアップデートはインストールされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>このタイトルにはDLCがインストールされていません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1にインストールされたDLCを正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>転送可能なOpenGLシェーダキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>転送可能なVulkanシェーダキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>転送可能なすべてのシェーダキャッシュを削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>カスタムゲーム設定を削除しますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>ファイル削除</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>転送可能なシェーダーキャッシュの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>このタイトル用のシェーダキャッシュは存在しません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>転送可能なシェーダーキャッシュが正常に削除されました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>転送可能なシェーダーキャッシュを削除できませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>転送可能なシェーダキャッシュの削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>転送可能なシェーダキャッシュを正常に削除しました.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>転送可能なシェーダキャッシュディレクトリの削除に失敗しました.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>カスタム設定の削除エラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>このタイトルのカスタム設定は存在しません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>カスタムゲーム設定を正常に削除しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>カスタムゲーム設定の削除に失敗しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFSの解析に失敗しました!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>RomFSファイルをコピー中にエラーが発生したか、ユーザー操作によりキャンセルされました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>フル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>スケルトン</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFSダンプモードの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>RomFSのダンプ方法を選択してください。&lt;br&gt;”完全”はすべてのファイルが新しいディレクトリにコピーされます。&lt;br&gt;”スケルトン”はディレクトリ構造を作成するだけです。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>RomFSを解析中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS解析成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>操作は成功しました。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>”%1”を開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>ディレクトリの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>プロパティ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>ゲームプロパティをロード出来ませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch実行ファイル (%1);;すべてのファイル (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>ファイルのロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>展開されているROMディレクトリを開く</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>無効なディレクトリが選択されました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>選択されたディレクトリに”main”ファイルが見つかりませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>インストール可能なスイッチファイル (*.nca *.nsp *.xci);;任天堂コンテンツアーカイブ (*.nca);;任天堂サブミッションパッケージ (*.nsp);;NXカートリッジイメージ (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>ファイルのインストール</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>残り %n ファイル</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot;ファイルをインストールしています・・・</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>インストール結果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n ファイルが新たにインストールされました
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n ファイルが上書きされました
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n ファイルのインストールに失敗しました
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>システムアプリケーション</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>システムアーカイブ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>システムアプリケーションアップデート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>ファームウェアパッケージ(Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>ファームウェアパッケージ(Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>ゲーム</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>ゲームアップデート</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>ゲームDLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>差分タイトル</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>NCAインストール種別を選択・・・</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>インストールするNCAタイトル種別を選択して下さい:
(ほとんどの場合、デフォルトの”ゲーム”で問題ありません。)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>インストール失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>選択されたNCAのタイトル種別が無効です。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>ファイルが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>ファイル”%1”が存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>yuzuアカウントが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>ゲームの互換性テストケースを送信するには、yuzuアカウントをリンクする必要があります。&lt;br&gt;&lt;br/&gt;yuzuアカウントをリンクするには、エミュレーション > 設定 > Web から行います。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>URLオープンエラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>URL&quot;%1&quot;を開けません。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation> TAS 記録中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>プレイヤー1のファイルを上書きしますか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>無効な設定を検出しました</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>携帯コントローラはドックモードで使用できません. Proコントローラが選択されます.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>amiiboファイル (%1);;すべてのファイル (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>amiiboのロード</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>amiiboデータファイルを開けませんでした</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>amiiboデータファイル”%1”を読み込めませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>amiiboデータファイルを読み込み中にエラーが発生した</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>amiiboデータを完全には読み取ることができませんでした。%1バイトを読み込もうとしましたが、%2バイトしか読み取れませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>amiiboデータ読み込み中にエラーが発生しました</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>amiiboデータをロードできませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>スクリーンショットのキャプチャ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG画像 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 状態: 実行中 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS 状態: 記録中 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 状態: アイドル %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS 状態: 無効</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
- <translation type="unfinished"/>
+ <translation>実行停止(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>実行(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
- <translation type="unfinished"/>
+ <translation>記録停止(&amp;R)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
- <translation type="unfinished"/>
+ <translation>記録(&amp;R)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>構築中: %n シェーダー</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
- <translation type="unfinished"/>
+ <translation>拡大率: %1倍</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>速度:%1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>速度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>ゲーム:%1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>フレーム:%1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU HIGH</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREME</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU ERROR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
- <translation type="unfinished"/>
+ <translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>ロードしようとしているゲームはプレイする前に、追加のファイルを必要とします。それはSwitchからダンプする必要があります。&lt;br/&gt;&lt;br/&gt;これらのファイルのダンプの詳細については、次のWikiページを参照してください:&lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;スイッチコンソールからのシステムアーカイブと共有フォントをダンプする&lt;/a&gt;。&lt;br/&gt;&lt;br/&gt;ゲームリストに戻りますか?エミュレーションを続けると、クラッシュ、保存データの破損、またはその他のバグが発生する可能性があります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzuはSwitchのシステムアーカイブ &quot;%1&quot; を見つけられませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzuはSwitchのシステムアーカイブ &quot;%1&quot; &quot;%2&quot; を見つけられませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>システムアーカイブが見つかりません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>システムアーカイブが見つかりません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzuはSwitchの共有フォント &quot;%1&quot; を見つけられませんでした。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>共有フォントが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>共有フォントが存在しません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>致命的なエラー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzuが致命的なエラーを検出しました。詳細については、ログを参照してください。ログへのアクセスの詳細については、次のページを参照してください。&lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;ログファイルをアップロードする方法&lt;/a&gt;。&lt;br/&gt;&lt;br/&gt;ゲームリストに戻りますか?エミュレーションを続けると、クラッシュ、保存データの破損、またはその他のバグが発生する可能性があります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>致命的なエラー発生</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>キーの再取得確認</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4715,37 +4689,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
これにより、自動生成されたキーファイルが削除され、キー導出モジュールが再実行されます。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>ヒューズがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0がありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Mainがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFOがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>派生コンポーネントがありません</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
- <translation type="unfinished"/>
+ <translation>暗号化キーがありません。&lt;br&gt;キー、ファームウェア、ゲームを取得するには&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu クイックスタートガイド&lt;/a&gt;を参照ください。&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4754,39 +4728,39 @@ on your system&apos;s performance.</source>
1分以上かかります。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>派生キー</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>RomFSダンプターゲットの選択</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>ダンプしたいRomFSを選択して下さい。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>yuzuを終了してもよろしいですか?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>エミュレーションを停止してもよろしいですか?セーブされていない進行状況は失われます。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5238,7 +5212,7 @@ Screen.</source>
<message>
<location filename="../../src/yuzu/main.ui" line="129"/>
<source>&amp;TAS</source>
- <translation type="unfinished"/>
+ <translation>&amp;TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="144"/>
@@ -5327,8 +5301,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>&amp;Amiiboをロード...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5363,7 +5337,7 @@ Screen.</source>
<message>
<location filename="../../src/yuzu/main.ui" line="313"/>
<source>&amp;Configure TAS...</source>
- <translation type="unfinished"/>
+ <translation>TASを設定... (%C)</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="321"/>
@@ -5378,12 +5352,12 @@ Screen.</source>
<message>
<location filename="../../src/yuzu/main.ui" line="337"/>
<source>&amp;Reset</source>
- <translation type="unfinished"/>
+ <translation>リセット(&amp;R)</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="345"/>
<source>R&amp;ecord</source>
- <translation type="unfinished"/>
+ <translation>記録(&amp;R)</translation>
</message>
</context>
<context>
@@ -5420,21 +5394,20 @@ Screen.</source>
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:18pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5483,8 +5456,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[未設定]</translation>
</message>
@@ -5495,10 +5468,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>軸 %1%2</translation>
</message>
@@ -5509,9 +5482,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[不明]</translation>
</message>
@@ -5578,32 +5551,32 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="82"/>
<source>L1</source>
- <translation type="unfinished"/>
+ <translation>L1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="84"/>
<source>L2</source>
- <translation type="unfinished"/>
+ <translation>L2</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="86"/>
<source>L3</source>
- <translation type="unfinished"/>
+ <translation>L3</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="88"/>
<source>R1</source>
- <translation type="unfinished"/>
+ <translation>R1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="90"/>
<source>R2</source>
- <translation type="unfinished"/>
+ <translation>R2</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="92"/>
<source>R3</source>
- <translation type="unfinished"/>
+ <translation>R3</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="94"/>
@@ -5637,76 +5610,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>HOME</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>タッチの設定</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
- <translation type="unfinished"/>
+ <translation>[未定義]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
- <translation type="unfinished"/>
+ <translation>[無効]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[未使用]</translation>
</message>
@@ -6246,7 +6229,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="468"/>
<source>&amp;Wait Tree</source>
- <translation type="unfinished"/>
+ <translation>&amp;Wait Tree</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts
index 81d65c246..d679377fc 100644
--- a/dist/languages/ko_KR.ts
+++ b/dist/languages/ko_KR.ts
@@ -56,22 +56,22 @@ p, li { white-space: pre-wrap; }
<translation>취소</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>터치패드의 &lt;br&gt; 상단 좌측 모서리를 눌러주세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>이제 터치패드의 &lt;br&gt; 하단 우측 모서리를 눌러주세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>설정 완료!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>확인</translation>
</message>
@@ -892,49 +892,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>메타 데이터 캐시 초기화</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>가상 NAND 경로 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>가상 SD 경로 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>게임카드 경로 설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>덤프 경로 설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>모드 불러오기 경로 설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>메타 데이터 캐시가 이미 비어있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>작업이 성공적으로 끝났습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>메타 데이터 캐시 삭제를 삭제할 수 없습니다. 해당 파일이 이미 사용 중이거나 존재하지 않을 수 있습니다.</translation>
</message>
@@ -995,36 +995,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>에뮬레이터가 작동 중일 때 종료 시 확인</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>게임 부팅시 유저 선택 화면 표시</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>백그라운드에 있을 시 에뮬레이션 일시중지</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>비활성 상태일 때 마우스 숨기기</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>모든 설정 초기화</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>모든 환경 설정과 게임별 맞춤 설정이 초기화됩니다. 게임 디렉토리나 프로필, 또는 입력 프로필은 삭제되지 않습니다. 진행하시겠습니까?</translation>
</message>
@@ -1219,7 +1229,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="432"/>
<source>AMD FidelityFX™️ Super Resolution (Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>AMD FidelityFX™️ 슈퍼 해상도(Vulkan 전용)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="458"/>
@@ -1412,86 +1422,6 @@ p, li { white-space: pre-wrap; }
<translation>[대기중]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation>방향키_왼쪽</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation>방향키_오른쪽</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation>방향키_위</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation>방향키_아래</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation>왼쪽스틱</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation>오른쪽스틱</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>유효하지않음</translation>
@@ -1839,7 +1769,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
<source>Controller navigation</source>
- <translation type="unfinished"/>
+ <translation>컨트롤러 탐색</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
@@ -1901,7 +1831,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>L 스틱</translation>
</message>
@@ -1995,14 +1925,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2021,7 +1951,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>+</translation>
</message>
@@ -2034,15 +1964,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2099,225 +2029,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>R 스틱</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>초기화</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[설정 안 됨]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>토글 버튼</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>버튼 반전</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>축 뒤집기</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>임계값 설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>0%에서 100% 안의 값을 고르세요</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>자이로 임계값 설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>아날로그 스틱 맵핑</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>OK 버튼을 누른 후에 먼저 조이스틱을 수평으로 움직이고, 그 다음 수직으로 움직이세요.
축을 뒤집으려면 수직으로 먼저 움직인 뒤에 수평으로 움직이세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>데드존: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>수정자 범위: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>프로 컨트롤러</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>듀얼 조이콘</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>왼쪽 조이콘</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>오른쪽 조이콘</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>휴대 모드</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube 컨트롤러</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>몬스터볼 Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>NES 컨트롤러</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>SNES 컨트롤러</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>N64 컨트롤러</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>세가 제네시스</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>시작 / 일시 정지</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>컨트롤 스틱</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>흔드세요!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[대기중]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>새 프로필</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>프로필 이름을 입력하세요:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>입력 프로필 생성</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>해당 프로필 이름은 사용할 수 없습니다!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; 입력 프로필 생성 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>입력 프로필 삭제</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; 입력 프로필 삭제 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>입력 프로필 불러오기</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; 입력 프로필 불러오기 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>입력 프로필 저장</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; 입력 프로필 저장 실패</translation>
</message>
@@ -2365,7 +2300,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>설정</translation>
</message>
@@ -2401,7 +2336,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>테스트</translation>
</message>
@@ -2416,82 +2351,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation>원격 서버</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;자세히 알아보기&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>포트 번호에 유효하지 않은 글자가 있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>포트 번호는 0부터 65353까지이어야 합니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP 주소가 유효하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>해당 UDP 서버는 이미 존재합니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>8개보다 많은 서버를 추가하실 수는 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>테스트 중</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>설정 중</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>테스트 성공</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>서버에서 성공적으로 데이터를 받았습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>테스트 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>서버에서 유효한 데이터를 수신할 수 없습니다.&lt;br&gt;서버가 올바르게 설정되어 있고 주소와 포트가 올바른지 확인하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP 테스트와 교정 설정이 진행 중입니다.&lt;br&gt;끝날 때까지 기다려주세요.</translation>
</message>
@@ -3403,7 +3338,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>새 이름:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[키 입력]</translation>
</message>
@@ -3618,68 +3553,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>진동</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>플레이어 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>플레이어 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>플레이어 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>플레이어 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>플레이어 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>플레이어 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>플레이어 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>플레이어 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>설정</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>정교한 진동 활성화</translation>
</message>
@@ -3887,821 +3827,845 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>프레임 제한이나 수직 동기화를 계산하지 않고 Switch 프레임을 에뮬레이션 하는 데 걸린 시간. 최대 속도로 에뮬레이트 중일 때에는 대부분 16.67 ms 근처입니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>유효하지 않은 설정 감지</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>휴대 모드용 컨트롤러는 거치 모드에서 사용할 수 없습니다. 프로 컨트롤러로 대신 선택됩니다.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>거치 모드</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>Clear Recent Files(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>계속(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>일시중지(&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu가 게임을 실행중입니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>오래된 게임 포맷 경고</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>이 게임 파일은 &apos;분해된 ROM 디렉토리&apos;라는 오래된 포맷을 사용하고 있습니다. 해당 포맷은 NCA, NAX, XCI 또는 NSP와 같은 다른 포맷으로 대체되었으며 분해된 ROM 디렉토리에는 아이콘, 메타 데이터 및 업데이트가 지원되지 않습니다.&lt;br&gt;&lt;br&gt;yuzu가 지원하는 다양한 Switch 포맷에 대한 설명은 &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;위키를 확인하세요.&lt;/a&gt; 이 메시지는 다시 표시되지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>ROM 로드 중 오류 발생!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>지원되지 않는 롬 포맷입니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>비디오 코어를 초기화하는 동안 오류가 발생했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>비디오 코어를 실행하는 동안 yuzu에 오류가 발생했습니다. 이것은 일반적으로 통합 드라이버를 포함하여 오래된 GPU 드라이버로 인해 발생합니다. 자세한 내용은 로그를 참조하십시오. 로그 액세스에 대한 자세한 내용은 &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;로그 파일 업로드 방법&lt;/a&gt; 페이지를 참조하세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>ROM 불러오는 중 오류 발생! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;파일들을 다시 덤프하기 위해&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 빠른 시작 가이드&lt;/a&gt; 를 따라주세요.&lt;br&gt;도움이 필요할 시 yuzu 위키&lt;/a&gt; 를 참고하거나 yuzu 디스코드&lt;/a&gt; 를 이용해보세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>알 수 없는 오류가 발생했습니다. 자세한 내용은 로그를 참고하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64비트)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32비트)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>세이브 데이터</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>모드 데이터</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>%1 폴더 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>폴더가 존재하지 않습니다!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>전송 가능한 셰이더 캐시 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>이 타이틀에 대한 셰이더 캐시 디렉토리를 생성하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>컨텐츠</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>업데이트</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>항목 제거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>설치된 게임을 삭제 %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>삭제 완료</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>설치된 기본 게임을 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>삭제 중 오류 발생 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>기본 게임은 NAND에 설치되어 있지 않으며 제거 할 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>설치된 업데이트를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>이 타이틀에 대해 설치된 업데이트가 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>이 타이틀에 설치된 DLC가 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>설치된 %1 DLC를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>OpenGL 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Vulkan 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>모든 전송 가능한 셰이더 캐시를 삭제하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>사용자 지정 게임 구성을 제거 하시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>파일 제거</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>전송 가능한 셰이더 캐시 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>이 타이틀에 대한 셰이더 캐시가 존재하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>전송 가능한 셰이더 캐시를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>전송 가능한 셰이더 캐시를 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>전송 가능한 셰이더 캐시 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>전송 가능한 셰이더 캐시를 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>전송 가능한 셰이더 캐시 디렉토리를 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>사용자 지정 구성 제거 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>이 타이틀에 대한 사용자 지정 구성이 존재하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>사용자 지정 게임 구성을 성공적으로 제거했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>사용자 지정 게임 구성을 제거하지 못했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 추출 실패!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>RomFS 파일을 복사하는 중에 오류가 발생했거나 사용자가 작업을 취소했습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>전체</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>뼈대</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS 덤프 모드 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>RomFS 덤프 방법을 선택하십시오.&lt;br&gt;전체는 모든 파일을 새 디렉토리에 복사하고&lt;br&gt;뼈대는 디렉토리 구조 만 생성합니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>%1에 RomFS를 추출하기에 충분한 여유 공간이 없습니다. 공간을 확보하거나 에뮬레이견 &gt; 설정 &gt; 시스템 &gt; 파일시스템 &gt; 덤프 경로에서 다른 덤프 디렉토리를 선택하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>RomFS 추출 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>취소</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 추출이 성공했습니다!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>작업이 성공적으로 완료되었습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>%1 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>경로 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>속성</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>게임 속성을 로드 할 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch 실행파일 (%1);;모든 파일 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>파일 로드</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>추출된 ROM 디렉토리 열기</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>잘못된 디렉토리 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>선택한 디렉토리에 &apos;main&apos;파일이 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>설치 가능한 Switch 파일 (*.nca *.nsp *.xci);;Nintendo 컨텐츠 아카이브 (*.nca);;Nintendo 서브미션 패키지 (*.nsp);;NX 카트리지 이미지 (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>파일 설치</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n개의 파일이 남음</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>파일 &quot;%1&quot; 설치 중...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>설치 결과</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>충돌을 피하기 위해, 낸드에 베이스 게임을 설치하는 것을 권장하지 않습니다.
이 기능은 업데이트나 DLC를 설치할 때에만 사용해주세요.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n개의 파일이 새로 설치되었습니다.
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n개의 파일을 덮어썼습니다.
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n개의 파일을 설치하지 못했습니다.
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>시스템 애플리케이션</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>시스템 아카이브</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>시스템 애플리케이션 업데이트</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>펌웨어 패키지 (A타입)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>펌웨어 패키지 (B타입)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>게임</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>게임 업데이트</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>게임 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>델타 타이틀</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>NCA 설치 유형 선택...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>이 NCA를 설치할 타이틀 유형을 선택하세요:
(대부분의 경우 기본값인 &apos;게임&apos;이 괜찮습니다.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>설치 실패</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>NCA 타이틀 유형이 유효하지 않습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>파일을 찾을 수 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>파일 &quot;%1&quot;을 찾을 수 없습니다</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>yuzu 계정 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>게임 호환성 테스트 결과를 제출하려면 yuzu 계정을 연결해야합니다.&lt;br&gt;&lt;br/&gt;yuzu 계정을 연결하려면 에뮬레이션 &amp;gt; 설정 &amp;gt; 웹으로 가세요.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>URL 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>URL &quot;%1&quot;을 열 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>TAS 레코딩</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>플레이어 1의 파일을 덮어쓰시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>유효하지 않은 설정 감지</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>휴대 모드용 컨트롤러는 거치 모드에서 사용할 수 없습니다. 프로 컨트롤러로 대신 선택됩니다.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 파일 (%1);; 모든 파일 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Amiibo 로드</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Amiibo 데이터 파일 열기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Amiibo 파일 &quot;%1&quot;을(를) 읽을 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Amiibo 데이터 파일 읽기 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Amiibo 데이터를 완전히 읽을 수 없습니다. %1 바이트를 읽으려고 했지만 %2 바이트만 읽을 수 있었습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Amiibo 데이터 로드 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Amiibo 데이터를 로드할 수 없습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>스크린샷 캡처</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG 이미지 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 상태: %1/%2 실행 중</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS 상태: 레코딩 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 상태: 유휴 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS 상태: 유효하지 않음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>실행 중지(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>시작(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>레코딩 중지(&amp;e)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>레코드(&amp;R)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>빌드중: %n개 셰이더</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>스케일: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>속도: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>속도: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>게임: %1 FPS (제한없음)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>게임: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>프레임: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU 보통</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU 높음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU 굉장함</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>NEAREST</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICUBIC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>AA 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>해당 게임은 플레이하기 전에 Switch 기기에서 추가 파일을 덤프해야합니다.&lt;br/&gt;&lt;br/&gt;이러한 파일 덤프에 대한 자세한 내용은 다음 위키 페이지를 참조하십시오: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Switch 콘솔에서 시스템 아카이브 및 공유 글꼴 덤프&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;게임 목록으로 돌아가시겠습니까? 이를 무시하고 에뮬레이션을 계속하면 충돌, 저장 데이터 손상 또는 기타 버그가 발생할 수 있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu가 Switch 시스템 아카이브를 찾을 수 없습니다. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu가 Switch 시스템 아카이브를 찾을 수 없습니다: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>시스템 아카이브를 찾을 수 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>시스템 아카이브 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu가 Switch 공유 글꼴을 찾을 수 없습니다. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>공유 글꼴을 찾을 수 없음</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>공유 글꼴 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>치명적인 오류</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>치명적인 오류가 발생했습니다. 자세한 내용은 로그를 확인하십시오. 로그 액세스에 대한 자세한 내용은 다음 페이지를 참조하십시오: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;로그 파일을 업로드하는 방법&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;게임 목록으로 돌아가시겠습니까? 이를 무시하고 에뮬레이션을 계속하면 충돌, 저장 데이터 손상 또는 기타 버그가 발생할 수 있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>치명적인 오류 발생</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>키 재생성 확인</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4718,37 +4682,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
자동 생성되었던 키 파일들이 삭제되고 키 생성 모듈이 다시 실행됩니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>fuses 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - BOOT0 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - BCPKG2-1-Normal-Main 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - PRODINFO 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>파생 구성 요소 누락</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>암호화 키가 없습니다. &lt;br&gt;모든 키, 펌웨어 및 게임을 얻으려면 &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 빠른 시작 가이드&lt;/a&gt;를 따르세요.&lt;br&gt;&lt;br&gt; &lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4757,39 +4721,39 @@ on your system&apos;s performance.</source>
소요될 수 있습니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>파생 키</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS 덤프 대상 선택</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>덤프할 RomFS를 선택하십시오.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>yuzu를 닫으시겠습니까?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>에뮬레이션을 중지하시겠습니까? 모든 저장되지 않은 진행 상황은 사라집니다.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5335,8 +5299,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Amiibo 불러오기...(&amp;A)</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5438,15 +5402,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>시작/일시 정지</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>충전중</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5495,8 +5454,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[설정 안 됨]</translation>
</message>
@@ -5507,10 +5466,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>축 %1%2</translation>
</message>
@@ -5521,9 +5480,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[알 수 없음]</translation>
</message>
@@ -5649,76 +5608,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>홈</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>터치</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>휠</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>뒤로가기</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>앞으로가기</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>Task</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>Extra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[설정안됨]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
- <translation type="unfinished"/>
+ <translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[유효하지않음]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2방향키 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Axis %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Axis %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2모션 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2버튼 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[미사용]</translation>
</message>
diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts
index 4e743495e..4f146ef11 100644
--- a/dist/languages/nb.ts
+++ b/dist/languages/nb.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfigurasjon ferdig!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -867,49 +867,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Velg Emulert NAND-Mappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Velg Emulert SD-Mappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Velg Spillkortbane...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Velg Mod-Lastingsmappe...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operasjonen ble fullført vellykket.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation type="unfinished"/>
</message>
@@ -970,36 +970,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Bekreft lukking mens emuleringen kjører</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pause emulasjon i bakgrunnen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Gjem mus under inaktivitet</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation type="unfinished"/>
</message>
@@ -1387,86 +1397,6 @@ p, li { white-space: pre-wrap; }
<translation>[venter]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Pluss</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1876,7 +1806,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Venstre Pinne</translation>
</message>
@@ -1970,14 +1900,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -1996,7 +1926,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Pluss</translation>
</message>
@@ -2009,15 +1939,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2074,224 +2004,229 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Høyre Pinne</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Fjern</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[ikke satt]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Dødsone: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modifikatorområde: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro-Kontroller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Doble Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Venstre Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Høyre Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Håndholdt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[venter]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Ny Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
@@ -2339,7 +2274,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfigurer</translation>
</message>
@@ -2375,7 +2310,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2390,82 +2325,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Lær Mer&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testing</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Konfigurering</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test Vellykket</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Mottatt data fra serveren vellykket.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test Feilet</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Kunne ikke motta gyldig data fra serveren.&lt;br&gt;Vennligst bekreft at serveren er satt opp riktig og at adressen og porten er riktige.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP-Test eller kalibrasjonskonfigurering er i fremgang.&lt;br&gt;Vennligst vent for dem til å bli ferdig.</translation>
</message>
@@ -3376,7 +3311,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Nytt navn:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[trykk knapp]</translation>
</message>
@@ -3591,68 +3526,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibrasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Spiller 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Spiller 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Spiller 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Spiller 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Spiller 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Spiller 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Spiller 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Spiller 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation type="unfinished"/>
</message>
@@ -3860,817 +3800,841 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Tid det tar for å emulere et Switch bilde. Teller ikke med bildebegrensing eller v-sync. For full-hastighet emulering burde dette være 16.67 ms. på det høyeste.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Advarsel: Utdatert Spillformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Du bruker en dekonstruert ROM-mappe for dette spillet, som er et utdatert format som har blitt erstattet av andre formater som NCA, NAX, XCI, eller NSP. Dekonstruerte ROM-mapper mangler ikoner, metadata, og oppdateringsstøtte.&lt;br&gt;&lt;br&gt;For en forklaring på diverse Switch-formater som yuzu støtter,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;sjekk vår wiki&lt;/a&gt;. Denne meldingen vil ikke bli vist igjen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Feil under innlasting av ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Dette ROM-formatet er ikke støttet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>En feil oppstod under initialisering av videokjernen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>En ukjent feil oppstod. Se loggen for flere detaljer.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Lagre Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Feil Under Åpning av %1 Mappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Mappen eksisterer ikke!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Innhold</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Oppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Fjern Installert Spill %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Feil Under Fjerning av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Grunnspillet er ikke installert i NAND og kan ikke bli fjernet.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Fjernet vellykket den installerte oppdateringen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Det er ingen oppdatering installert for denne tittelen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Det er ingen DLC installert for denne tittelen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Fjernet vellykket %1 installerte DLC-er.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Fjern Tilpasset Spillkonfigurasjon?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Fjern Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Feil Under Fjerning Av Overførbar Shader Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Fjernet vellykket den overførbare shader cachen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Feil under fjerning av den overførbare shader cachen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Feil Under Fjerning Av Tilpasset Konfigurasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>En tilpasset konfigurasjon for denne tittelen finnes ikke.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Fjernet vellykket den tilpassede spillkonfigurasjonen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Feil under fjerning av den tilpassede spillkonfigurasjonen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Utvinning av RomFS Feilet!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Det oppstod en feil under kopiering av RomFS filene eller så kansellerte brukeren operasjonen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Fullstendig</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Skjelett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Velg RomFS Dump Modus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Velg hvordan du vil dumpe RomFS.&lt;br&gt;Fullstendig vil kopiere alle filene til en ny mappe mens &lt;br&gt;skjelett vil bare skape mappestrukturen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Utvinner RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Utpakking lyktes!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operasjonen fullført vellykket.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Feil ved åpning av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Velg Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Spillets egenskaper kunne ikke bli lastet inn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch Kjørbar Fil (%1);;Alle Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Last inn Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Åpne Utpakket ROM Mappe</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Ugyldig Mappe Valgt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Mappen du valgte inneholder ikke en &apos;main&apos; fil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Installerbar Switch-Fil (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xcI)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Installer Filer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installerer fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Insallasjonsresultater</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systemapplikasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systemapplikasjonsoppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmware Pakke (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmware-Pakke (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Spill</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Spilloppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Spill tilleggspakke</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Tittel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Velg NCA Installasjonstype...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Vennligst velg typen tittel du vil installere denne NCA-en som:
(I de fleste tilfellene, standarden &apos;Spill&apos; fungerer.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Feil under Installasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Titteltypen du valgte for NCA-en er ugyldig.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Fil ikke funnet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Filen &quot;%1&quot; ikke funnet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Mangler yuzu Bruker</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>For å sende inn et testtilfelle for spillkompatibilitet, må du linke yuzu-brukeren din.&lt;br&gt;&lt;br/&gt;For å linke yuzu-brukeren din, gå til Emulasjon &amp;gt; Konfigurasjon &amp;gt; Nett.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Feil under åpning av URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Kunne ikke åpne URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo-Fil (%1);; Alle Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Last inn Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Feil ved Åpning av Amiibo data fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Kunne ikke åpne Amiibo-fil &quot;%1&quot; for lesing.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Feil under lesing av Amiibo datafil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Kunne ikke lese all Amiibo-data. Forventet å lese minst %1 bytes, men kunne bare lese %2 bytes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Feil ved lasting av Amiibo data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Kunne ikke laste Amiibo-data.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Ta Skjermbilde</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bilde (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighet: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Hastighet: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Spill: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Ramme: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Spillet du prøver å laste krever at ekstra filer fra din Switch blir dumpet før du spiller.&lt;br/&gt;&lt;br/&gt;For mer informasjon om dumping av disse filene, vennligst se den følgende wiki-siden: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping av System-Arkiv og Shared Fonts fra en Switch-Konsoll&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vil du gå tilbake til spillisten? Fortsetting av emulasjon kan føre til krasjing, ødelagt lagringsdata, eller andre feil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu kunne ikke finne et Switch system-arkiv. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu kunne ikke finne et Switch system-arkiv: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>System Arkiv Ikke Funnet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>System Arkiv Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu kunne ikke finne Switch shared fonts. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Shared Fonts Ikke Funnet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Shared Font Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Fatal Feil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu har oppdaget en fatal feil, vennligst se loggen for flere detaljer. For mer informasjon om å finne loggen, vennligst se den følgende siden: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Hvordan å Laste Opp Log-Filen&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vil du gå tilbake til spillisten? Fortsetting av emulasjon kan føre til krasjing, ødelagt lagringsdata, eller andre feil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Fatal Feil oppstått</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Bekreft Nøkkel-Redirevasjon</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4687,37 +4651,37 @@ og eventuelt lag backups.
Dette vil slette dine autogenererte nøkkel-filer og kjøre nøkkel-derivasjonsmodulen på nytt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Mangler fuses</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Mangler BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Mangler BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- Mangler PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Derivasjonskomponenter Mangler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4726,39 +4690,39 @@ Dette kan ta opp til et minutt avhengig
av systemytelsen din.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Deriverer Nøkler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Velg RomFS Dump-Mål</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Vennligst velg hvilken RomFS du vil dumpe.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Er du sikker på at du vil lukke yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Er du sikker på at du vil stoppe emulasjonen? All ulagret fremgang vil bli tapt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5296,7 +5260,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5395,15 +5359,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5452,8 +5411,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[ikke satt]</translation>
</message>
@@ -5464,10 +5423,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Akse %1%2</translation>
</message>
@@ -5478,9 +5437,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[ukjent]</translation>
</message>
@@ -5606,76 +5565,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Hjem</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Touch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[ubrukt]</translation>
</message>
diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts
index a1666e039..e33814e5a 100644
--- a/dist/languages/nl.ts
+++ b/dist/languages/nl.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Annuleren</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Raak de linkerbovenhoek &lt;br&gt; van uw touchpad aan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>klik nu op toets &lt;br&gt; op je toetsenbord</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configuratie compleet!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -890,49 +890,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Herstel Metadata Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Selecteer Geëmuleerde NAND Folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Selecteer Geëmuleerde SD Folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Selecteer Gamekaart Pad</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Selecteer Dump Folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Selecteer Mod Laad Folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>De metadata cache is al leeg.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>De operatie is succesvol voltooid.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>De metadata cache kon niet worden verwijderd. Het wordt mogelijk gebruikt of bestaat niet.</translation>
</message>
@@ -993,36 +993,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Bevestig sluiten terwijl emulatie nog bezig is</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Vraag voor gebruiker bij het opstartten van het spel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pauzeer Emulatie wanneer yuzu op de achtergrond openstaat</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Verstop muis wanneer inactief</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Reset alle instellingen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Hiermee worden alle instellingen gereset en alle configuraties per game verwijderd. Hiermee worden gamedirectory&apos;s, profielen of invoerprofielen niet verwijderd. Doorgaan?</translation>
</message>
@@ -1410,86 +1420,6 @@ p, li { white-space: pre-wrap; }
<translation>[aan het wachten]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R:</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Min</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus:</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1899,7 +1829,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Linker Stick</translation>
</message>
@@ -1993,14 +1923,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2019,7 +1949,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus:</translation>
</message>
@@ -2032,15 +1962,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2097,225 +2027,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Rechter Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Verwijder</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[niet ingesteld]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Shakel Knop</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Spiegel As</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Zet Analoge Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Na OK in te drukken, beweeg je joystick eerst horizontaal en dan verticaal.
Om de assen te spiegelen, beweek je joystick eerst verticaal en dan horizontaal.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Deadzone: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Bewerk Range: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Twee Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Linker Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Rechter Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Mobiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pauze</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Control Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Shudden!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[aan het wachten]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nieuw Profiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Voer nieuwe gebruikersnaam in:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Creëer een nieuw Invoer Profiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>De ingevoerde Profiel naam is niet geldig</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Het is mislukt om Invoer Profiel &quot;%1 te Creëer</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Verwijder invoer profiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Het is mislukt om Invoer Profiel &quot;%1 te Verwijderen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Laad invoer profiel</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Het is mislukt om Invoer Profiel &quot;%1 te Laden</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Sla Invoer profiel op</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Het is mislukt om Invoer Profiel &quot;%1 Op te slaan</translation>
</message>
@@ -2363,7 +2298,7 @@ Om de assen te spiegelen, beweek je joystick eerst verticaal en dan horizontaal.
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configureer</translation>
</message>
@@ -2399,7 +2334,7 @@ Om de assen te spiegelen, beweek je joystick eerst verticaal en dan horizontaal.
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2414,82 +2349,82 @@ Om de assen te spiegelen, beweek je joystick eerst verticaal en dan horizontaal.
<translation>Externe Server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Leer Meer&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>Yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Poortnummer bevat ongeldige tekens</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Poort moet in bereik 0 en 65353 zijn</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP adress is niet geldig</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Deze UDP server bestaat al</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Kan niet meer dan 8 servers toevoegen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configureren</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test Succesvol</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>De data van de server is succesvol ontvangen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test Gefaald</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Kan niet de juiste data van de server ontvangen.&lt;br&gt;Verifieer dat de server is goed opgezet en dat het adres en poort correct zijn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP Test of calibratie configuratie is bezig.&lt;br&gt;Wacht alstublieft totdat het voltooid is.</translation>
</message>
@@ -3401,7 +3336,7 @@ Sleep punten om positie te veranderen, of dubbel klik één van de tabel cellen
<translation>Nieuwe naam:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[druk op toets]</translation>
</message>
@@ -3616,68 +3551,73 @@ Sleep punten om positie te veranderen, of dubbel klik één van de tabel cellen
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibratie</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Speler 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Speler 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Speler 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Speler 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Speler 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Speler 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Speler 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Speler 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation type="unfinished"/>
</message>
@@ -3885,817 +3825,841 @@ Sleep punten om positie te veranderen, of dubbel klik één van de tabel cellen
<translation>Tijd gebruikt om een frame van de Switch te emuleren, waarbij framelimiteren of v-sync niet wordt meegerekend. Voor emulatie op volledige snelheid zou dit maximaal 16.67 ms zijn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pauzeren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Waarschuwing Verouderd Spel Formaat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Je gebruikt gedeconstrueerd ROM map formaat voor dit Spel, dit is een verouderd formaat en is vervangen door formaten zoals NCA, NAX, XCI of NSP. Gedeconstrueerd ROM map heeft geen iconen, metadata en update understeuning.&lt;br&gt;&lt;br&gt;Voor een uitleg over welke Switch formaten yuzu ondersteund, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;kijk op onze wiki&lt;/a&gt;. Dit bericht word niet nog een keer weergegeven.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Fout tijdens het laden van een ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Het formaat van de ROM is niet ondersteunt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Er is een fout opgetreden tijdens het initialiseren van de videokern.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Een onbekende fout heeft plaatsgevonden. Kijk in de log voor meer details.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Save Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Fout tijdens het openen van %1 folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Folder bestaat niet!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Fout Bij Het Openen Van Overdraagbare Shader Cache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Er bestaat geen shader cache voor deze game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS Extractie Mislukt!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Er was een fout tijdens het kopiëren van de RomFS bestanden of de gebruiker heeft de operatie geannuleerd.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Vol</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Skelet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Selecteer RomFS Dump Mode</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Selecteer alstublieft hoe je de RomFS wilt dumpen.&lt;br&gt;Volledig kopieërd alle bestanden in een map terwijl &lt;br&gt; skelet maakt alleen het map structuur.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>RomFS uitpakken...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Annuleren</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Extractie Geslaagd!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>De operatie is succesvol voltooid.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Fout bij openen %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Selecteer Map</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Eigenschappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>De eigenschappen van de game kunnen niet geladen worden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch Executable (%1);;Alle bestanden (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Laad Bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Open Gedecomprimeerd ROM Map</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Ongeldige Map Geselecteerd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>De map die je hebt geselecteerd bevat geen &apos;main&apos; bestand.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Bestand &quot;%1&quot; Installeren...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systeem Applicatie</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systeem Archief</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systeem Applicatie Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Filmware Pakket (Type A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Filmware Pakket (Type B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Game</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Game Update</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Game DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Selecteer NCA Installatie Type...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Selecteer het type titel hoe je wilt dat deze NCA installeerd:
(In de meeste gevallen is de standaard &apos;Game&apos; juist.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Installatie Mislukt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Het type title dat je hebt geselecteerd voor de NCA is ongeldig.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Bestand niet gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Bestand &quot;%1&quot; niet gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Je yuzu account mist</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Om game campatibiliteit te raporteren, moet je je yuzu account koppelen.&lt;br&gt;&lt;br/&gt; Om je yuzu account te koppelen, ga naar Emulatie &amp;gt; Configuratie &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo Bestand (%1);; Alle Bestanden (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Laad Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Fout tijdens het openen van het Amiibo gegevens bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Kan Amiibo bestand &quot;%1&quot; niet lezen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Fout tijdens het lezen van het Amiibo gegevens bestand</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Kan de volledige Amiibo gegevens niet lezen. Verwacht om %1 bytes te lezen, maar het is alleen mogelijk om %2 bytes te lezen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Fout tijdens het laden van de Amiibo data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Kan de Amiibo gegevens niet laden.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Screenshot Vastleggen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG afbeelding (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Snelheid: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Snelheid: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Game: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Frame: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>De game die je probeert te laden heeft extra bestanden nodig van je Switch voordat je het kan spelen. &lt;br/&gt;&lt;br/&gt;Voor meer informatie over het dumpen van deze bestanden, volg alsjeblieft onze wiki pagina: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Het dumpen van Systeem Archieven en de Gedeelde Lettertypen van een Switch console &lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Wil je terug gaan naar de game lijst? Verdergaan met de emulatie zal misschien gevolgen hebben als vastlopen, beschadigde opslag data, of andere problemen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu was niet in staat om de Switch systeem archieven te vinden. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu was niet in staat om de Switch systeem archieven te vinden. %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Systeem Archief Niet Gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Systeem Archief Mist</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu was niet in staat om de Switch shared fonts te vinden. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Shared Fonts Niet Gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Gedeelde Lettertypes Niet Gevonden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Fatale Fout</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu is een fatale fout tegengekomen, zie de log voor meer details. Voor meer informatie over toegang krijgen tot de log, zie de volgende pagina: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Hoe upload je een log bestand&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Zou je terug willen naar de game lijst? Doorgaan met emulatie kan resulteren in vastlapen, corrupte save gegevens, of andere problemen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Fatale Fout opgetreden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Bevestig Sleutel Herafleiding</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4712,37 +4676,37 @@ en optioneel maak backups.
Dit zal je automatisch gegenereerde sleutel bestanden verwijderen en de sleutel verkrijger module opnieuw starten</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4750,39 +4714,39 @@ on your system&apos;s performance.</source>
op je systeem&apos;s performatie.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Sleutels afleiden</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Selecteer RomFS Dump Doel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Selecteer welke RomFS je zou willen dumpen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Weet je zeker dat je yuzu wilt sluiten?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Weet je zeker dat je de emulatie wilt stoppen? Alle onopgeslagen voortgang will verloren gaan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5322,7 +5286,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5421,15 +5385,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5478,8 +5437,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[niet aangegeven]</translation>
</message>
@@ -5490,10 +5449,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Axis %1%2</translation>
</message>
@@ -5504,9 +5463,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[onbekend]</translation>
</message>
@@ -5632,76 +5591,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Touch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[ongebruikt]</translation>
</message>
diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts
index 66fc3e322..48c4820a0 100644
--- a/dist/languages/pl.ts
+++ b/dist/languages/pl.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Anuluj</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Dotknij lewy górny róg &lt;br&gt; swojego touchpada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Dotknij prawy dolny róg &lt;br&gt; swojego touchpada</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfiguracja zakończona!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -317,7 +317,8 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+Ta opcja zwiększa szybkość 32-bitowych funkcji zmiennoprzecinkowych ASIMD, uruchamiając je z nieprawidłowymi trybami zaokrąglania.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="125"/>
@@ -350,7 +351,7 @@ Wyłączenie tej opcji może pozwolić grze na zapis lub odczyt pamięci emulato
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="149"/>
<source>Disable address space checks</source>
- <translation type="unfinished"/>
+ <translation>Wyłącz sprawdzanie przestrzeni adresów</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="174"/>
@@ -490,12 +491,13 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
&lt;div style=&quot;white-space: nowrap&quot;&gt;When enabled, a misalignment is only triggered when an access crosses a page boundary.&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap&quot;&gt;When disabled, a misalignment is triggered on all misaligned accesses.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy dostęp przekracza granicę strony. Gdy ta opcja jest wyłączona, niedopasowanie jest uruchamiane przy wszystkich niedopasowanych dostępach.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="133"/>
<source>Enable misalignment check reduction</source>
- <translation type="unfinished"/>
+ <translation>Włącz redukowanie sprawdzania niezgodności</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="140"/>
@@ -504,12 +506,15 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
&lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all memory accesses to use Software MMU Emulation.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+&lt;div style=&quot;white-space: nowrap&quot;&gt;Ta optymalizacja przyspiesza dostęp do pamięci przez program gościa.&lt;/div&gt;
+&lt;div style=&quot;white-space: nowrap&quot;&gt; Włączenie tej opcji powoduje, że odczyty/zapisy pamięci gościa będą dokonywane bezpośrednio w pamięci i będą używały MMU hosta. &lt;/div&gt;
+&lt;div style=&quot;white-space: nowrap&quot;&gt;Wyłączenie tej opcji zmusza wszystkie dostępy do pamięci do korzystania z programowej emulacji MMU.&lt;/div&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="147"/>
<source>Enable Host MMU Emulation</source>
- <translation type="unfinished"/>
+ <translation>Włącz Emulację Hosta MMU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="172"/>
@@ -547,7 +552,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="49"/>
<source>Enable Extended Logging**</source>
- <translation type="unfinished"/>
+ <translation>Włącz Przedłużony Logging**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="59"/>
@@ -577,17 +582,17 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="101"/>
<source>When checked, it enables Nsight Aftermath crash dumps</source>
- <translation type="unfinished"/>
+ <translation>Gdy zaznaczone, włącza zrzucanie awarii Nsight Aftermath</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="104"/>
<source>Enable Nsight Aftermath</source>
- <translation type="unfinished"/>
+ <translation>Włącz Nsight Aftermath</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="114"/>
<source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
- <translation type="unfinished"/>
+ <translation>Po zaznaczeniu, zrzuci wszystkie oryginalne shadery asemblera z pamięci podręcznej dysku shaderów albo gry, jeśli zostaną znalezione</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="117"/>
@@ -607,22 +612,22 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="137"/>
<source>When checked, yuzu will log statistics about the compiled pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Po zaznaczeniu, yuzu będzie rejestrować statystyki dotyczące skompilowanej pamięci podręcznej.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="140"/>
<source>Enable Shader Feedback</source>
- <translation type="unfinished"/>
+ <translation>Włącz funkcję Feedbacku Shaderów</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="147"/>
<source>When checked, it executes shaders without loop logic changes</source>
- <translation type="unfinished"/>
+ <translation>Gdy zaznaczone, używa shaderów bez zmian logicznych pętli</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="150"/>
<source>Disable Loop safety checks</source>
- <translation type="unfinished"/>
+ <translation>Wyłącz Zapętlanie sprawdzania bezpieczeństwa</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="160"/>
@@ -632,12 +637,12 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="166"/>
<source>Enable FS Access Log</source>
- <translation type="unfinished"/>
+ <translation>Włącz dziennik Dostępu FS</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="173"/>
<source>Enable Verbose Reporting Services**</source>
- <translation type="unfinished"/>
+ <translation>Włącz Pełne Usługi Raportowania**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="183"/>
@@ -662,7 +667,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="210"/>
<source>Enable Auto-Stub**</source>
- <translation type="unfinished"/>
+ <translation>Włącz Auto-Stub**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="217"/>
@@ -672,7 +677,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="232"/>
<source>**This will be reset automatically when yuzu closes.</source>
- <translation type="unfinished"/>
+ <translation>**To zresetuje się automatycznie po wyłączeniu yuzu.</translation>
</message>
</context>
<context>
@@ -889,49 +894,49 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Zresetuj pamięć podręczną metadanych</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Wybierz emulowany katalog NAND...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Wybierz Emulowany katalog SD...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Wybierz Ścieżkę karty gry...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Wybierz katalog zrzutu...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Wybierz katalog ładowania modów...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Pamięć podręczna metadanych jest już pusta.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operacja zakończona sukcesem.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Nie udało się usunąć pamięci podręcznej metadanych. Może być używana lub nie istnieje.</translation>
</message>
@@ -963,7 +968,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="70"/>
<source>Requires the use of the FPS Limiter Toggle hotkey to take effect.</source>
- <translation type="unfinished"/>
+ <translation>Wymaga używania klawisza, który limituje Klatki na Sekundę.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="73"/>
@@ -992,36 +997,46 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Potwierdź wyjście podczas emulacji</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Pytaj o użytkownika podczas uruchamiania gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Wstrzymaj emulację w tle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Ukryj mysz przy braku aktywności</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Resetuj wszystkie ustawienia</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Spowoduje to zresetowanie wszystkich ustawień i usunięcie wszystkich konfiguracji gier. Nie spowoduje to usunięcia katalogów gier, profili ani profili wejściowych. Kontynuować?</translation>
</message>
@@ -1066,7 +1081,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="162"/>
<source>Use disk pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Użyj Pamięci Podręcznej Pipeline z dysku</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="169"/>
@@ -1076,7 +1091,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="176"/>
<source>Accelerate ASTC texture decoding</source>
- <translation type="unfinished"/>
+ <translation>Przyspiesz dekodowanie tekstur ASTC</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="198"/>
@@ -1191,7 +1206,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="407"/>
<source>Nearest Neighbor</source>
- <translation type="unfinished"/>
+ <translation>Najbliższy Sąsiad</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="412"/>
@@ -1206,12 +1221,12 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="422"/>
<source>Gaussian</source>
- <translation type="unfinished"/>
+ <translation>Gauss</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="427"/>
<source>ScaleForce</source>
- <translation type="unfinished"/>
+ <translation>ScaleForce</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="432"/>
@@ -1280,12 +1295,13 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="75"/>
<source>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don&apos;t notice a performance difference.</source>
- <translation>VSync zapobiega rozrywaniu ekranu, ale niektóre karty graficzne mają niższą wydajność przy włączonej funkcji VSync. Pozostaw ją włączoną, jeśli nie zauważysz różnicy w wydajności.</translation>
+ <translation>VSync zapobiega rozwarstwianiu obrazu, ale niektóre karty graficzne mogą działać wolniej używając VSync.
+Pozostaw tą funkcję włączoną, jeśli nie widać różnicy w wydajności.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="78"/>
<source>Use VSync (OpenGL only)</source>
- <translation>Użyj VSync (OpenGL tylko)</translation>
+ <translation>Używaj Vsync (Tylko OpenGL)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="85"/>
@@ -1300,12 +1316,12 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="95"/>
<source>Enables Fast GPU Time. This option will force most games to run at their highest native resolution.</source>
- <translation type="unfinished"/>
+ <translation>Włącza Szybszy Czas GPU. Ta opcja zmusza większość gier do wyświetlania w swojej najwyższej natywnej rozdzielczości.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="98"/>
<source>Use Fast GPU Time (Hack)</source>
- <translation type="unfinished"/>
+ <translation>Użyj Szybszego Czasu GPU (Hack)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="120"/>
@@ -1383,7 +1399,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
<source>Controller Hotkey</source>
- <translation type="unfinished"/>
+ <translation>Skrót Klawiszowy Kontrolera</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="124"/>
@@ -1401,7 +1417,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="144"/>
<source>Home+%1</source>
- <translation type="unfinished"/>
+ <translation>Menu+%1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="158"/>
@@ -1409,86 +1425,6 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<translation>[oczekiwanie]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation>Dpad_w_lewo</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation>Dpad_w_prawo</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation>Dpad_w_górę</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation>Dpad_w_dół</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation>Lewy_Drążek</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation>Prawy_Drążek</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Plus</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>Nieprawidłowe</translation>
@@ -1506,12 +1442,12 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="351"/>
<source>Conflicting Button Sequence</source>
- <translation type="unfinished"/>
+ <translation>Sprzeczna Sekwencja Przycisków</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="352"/>
<source>The default button sequence is already assigned to: %1</source>
- <translation type="unfinished"/>
+ <translation>Domyślna sekwencja przycisków już jest przypisana do: %1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="366"/>
@@ -1831,7 +1767,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2653"/>
<source>Enable UDP controllers (not needed for motion)</source>
- <translation type="unfinished"/>
+ <translation>Włącz kontrolery UDP (nie są potrzebne do ruchu)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
@@ -1898,7 +1834,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Lewa gałka</translation>
</message>
@@ -1992,14 +1928,14 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2018,7 +1954,7 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Plus</translation>
</message>
@@ -2031,15 +1967,15 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2096,225 +2032,230 @@ Będąc nieaktywne, zadziałają tylko gdy debugowanie CPU jest włączone.</tra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Prawa gałka</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Wyczyść</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[nie ustawione]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Przycisk Toggle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
- <translation type="unfinished"/>
+ <translation>Odwróć przycisk</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Odwróć oś</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
- <translation type="unfinished"/>
+ <translation>Ustaw próg</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Wybierz wartość od 0% do 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation>Ustaw próg gyro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Przypisz Drążek Analogowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Po naciśnięciu OK, najpierw przesuń joystick w poziomie, a następnie w pionie.
Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Martwa strefa: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Zasięg Modyfikatora: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Para Joyconów</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Lewy Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Prawy Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Handheld</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Kontroler GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Kontroler NES/Pegasus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Kontroler SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Kontroler N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Mega Drive</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Start / Pauza</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Lewa gałka</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-gałka</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Potrząśnij!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[oczekiwanie]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Nowy profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Wpisz nazwę profilu:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Utwórz profil wejściowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Podana nazwa profilu jest nieprawidłowa!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Nie udało się utworzyć profilu wejściowego &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Usuń profil wejściowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Nie udało się usunąć profilu wejściowego &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Załaduj profil wejściowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Nie udało się wczytać profilu wejściowego &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Zapisz profil wejściowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Nie udało się zapisać profilu wejściowego &quot;%1&quot;</translation>
</message>
@@ -2362,14 +2303,14 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfiguruj</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="57"/>
<source>Touch from button profile:</source>
- <translation type="unfinished"/>
+ <translation>Dotyk z profilu przycisku:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="85"/>
@@ -2398,7 +2339,7 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2413,82 +2354,82 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
<translation>Usuń serwer</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Dowiedz się więcej&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Port zawiera nieprawidłowe znaki</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port musi być w zakresie 0-65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>Adres IP nie jest prawidłowy</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Ten serwer UDP już istnieje</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Nie można dodać więcej niż 8 serwerów</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testowanie</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Konfigurowanie</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test Udany</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Pomyślnie odebrano dane z serwera.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test nieudany</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Nie można odebrać poprawnych danych z serwera.&lt;br&gt;Sprawdź, czy serwer jest poprawnie skonfigurowany, a adres i port są prawidłowe.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Trwa konfiguracja testu UDP lub kalibracji.&lt;br&gt;Poczekaj na zakończenie.</translation>
</message>
@@ -3252,17 +3193,17 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="17"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reads controller input from scripts in the same format as TAS-nx scripts.&lt;br/&gt;For a more detailed explanation, please consult the &lt;a href=&quot;https://yuzu-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;help page&lt;/span&gt;&lt;/a&gt; on the yuzu website.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Odczytuje dane wejściowe kontrolera ze skryptów takiego samego formatu jak skrypty TAS-nx.&lt;br/&gt; Jeśli chcesz otrzymać bardziej szczegółowe wyjaśnienie, wejdź na &lt;a href=&quot;https://yuzu-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;stronę pomocy&lt;/span&gt;&lt;/a&gt; na stronie internetowej yuzu.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="24"/>
<source>To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -&gt; General -&gt; Hotkeys).</source>
- <translation type="unfinished"/>
+ <translation>Aby sprawdzić jakie skróty sterują odtwarzaniem/nagrywaniem, odnieś się do ustawień Skrótów (Konfiguruj -&gt; Ogólne -&gt; Skróty Klawiszowe).</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="34"/>
<source>WARNING: This is an experimental feature.&lt;br/&gt;It will not play back scripts frame perfectly with the current, imperfect syncing method.</source>
- <translation type="unfinished"/>
+ <translation>UWAGA: To jest funkcja eksperymentalna. Nie będzie odtwarzała skryptów co do klatki z teraźniejszą, nieperfekcyjną metodą synchronizacji.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="51"/>
@@ -3282,7 +3223,7 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="74"/>
<source>Pause execution during loads</source>
- <translation type="unfinished"/>
+ <translation>Zatrzymuj wykonanie w trakcie ładowania</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="88"/>
@@ -3400,7 +3341,7 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe
<translation>Nowa nazwa:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[naciśnij przycisk]</translation>
</message>
@@ -3615,68 +3556,73 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Wibracje</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Gracz 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Gracz 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Gracz 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Gracz 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Gracz 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Gracz 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Gracz 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Gracz 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Ustawienia</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Włącz dokładne wibracje</translation>
</message>
@@ -3884,441 +3830,431 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe
<translation>Czas potrzebny do emulacji klatki na sekundę Switcha, nie licząc ograniczania klatek ani v-sync. Dla emulacji pełnej szybkości powinno to wynosić co najwyżej 16,67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Wykryto nieprawidłową konfigurację</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Nie można używać kontrolera handheld w trybie zadokowanym. Zostanie wybrany kontroler Pro.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Usuń Ostatnie pliki</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Kontynuuj</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pauza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu jest w trakcie gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>OSTRZEŻENIE! Nieaktualny format gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Używasz zdekonstruowanego formatu katalogu ROM dla tej gry, który jest przestarzałym formatem, który został zastąpiony przez inne, takie jak NCA, NAX, XCI lub NSP. W zdekonstruowanych katalogach ROM brakuje ikon, metadanych i obsługi aktualizacji.&lt;br&gt;&lt;br&gt; Aby znaleźć wyjaśnienie różnych formatów Switch obsługiwanych przez yuzu,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt; sprawdź nasze wiki&lt;/a&gt;. Ta wiadomość nie pojawi się ponownie.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Błąd podczas wczytywania ROMu!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Ten format ROMu nie jest wspierany.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Wystąpił błąd podczas inicjowania rdzenia wideo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
- <translation type="unfinished"/>
+ <translation>yuzu napotkał błąd podczas uruchamiania rdzenia wideo. Jest to zwykle spowodowane przestarzałymi sterownikami GPU, w tym zintegrowanymi. Więcej szczegółów znajdziesz w pliku log. Więcej informacji na temat dostępu do log-u można znaleźć na następującej stronie: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Jak przesłać plik log&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Błąd podczas wczytywania ROMu! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Postępuj zgodnie z&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu quickstart guide&lt;/a&gt; aby zrzucić ponownie swoje pliki.&lt;br&gt;Możesz odwołać się do wiki yuzu&lt;/a&gt;lub discord yuzu &lt;/a&gt; po pomoc.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Wystąpił nieznany błąd. Więcej informacji można znaleźć w pliku log.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Zapis danych</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Dane modów</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Błąd podczas otwarcia folderu %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Folder nie istnieje!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Błąd podczas otwierania przenośnej pamięci podręcznej Shaderów.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Nie udało się stworzyć ścieżki shaderów dla tego tytułu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Zawartość</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Łatka</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Usuń wpis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Usunąć zainstalowaną grę %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Pomyślnie usunięto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Pomyślnie usunięto zainstalowaną grę.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Błąd podczas usuwania %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Gra nie jest zainstalowana w NAND i nie może zostać usunięta.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Pomyślnie usunięto zainstalowaną łatkę.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Brak zainstalowanych łatek dla tego tytułu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Brak zainstalowanych DLC dla tego tytułu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Pomyślnie usunięto %1 zainstalowane DLC.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Usunąć Transferowalne Shadery OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Usunąć Transferowalne Shadery Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Usunąć Wszystkie Transferowalne Shadery?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Usunąć niestandardową konfigurację gry?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Usuń plik</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Błąd podczas usuwania przenośnej pamięci podręcznej Shaderów.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Pamięć podręczna Shaderów dla tego tytułu nie istnieje.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Pomyślnie usunięto przenośną pamięć podręczną Shaderów.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Nie udało się usunąć przenośnej pamięci Shaderów.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Błąd podczas usuwania Transferowalnych Shaderów</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Pomyślnie usunięto transferowalne shadery.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Nie udało się usunąć ścieżki transferowalnych shaderów.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Błąd podczas usuwania niestandardowej konfiguracji</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Niestandardowa konfiguracja nie istnieje dla tego tytułu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Pomyślnie usunięto niestandardową konfiguracje gry.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Nie udało się usunąć niestandardowej konfiguracji gry.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Wypakowanie RomFS nieudane!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Wystąpił błąd podczas kopiowania plików RomFS lub użytkownik anulował operację.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Pełny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Szkielet</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Wybierz tryb zrzutu RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Proszę wybrać w jaki sposób chcesz, aby zrzut pliku RomFS został wykonany. &lt;br&gt;Pełna kopia ze wszystkimi plikami do nowego folderu, gdy &lt;br&gt;skielet utworzy tylko strukturę folderu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>Nie ma wystarczająco miejsca w %1 aby wyodrębnić RomFS.
Zwolnij trochę miejsca, albo zmień ścieżkę zrzutu RomFs w Emulacja&gt; Konfiguruj&gt; System&gt; System Plików&gt; Źródło Zrzutu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Wypakowywanie RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Wypakowanie RomFS zakończone pomyślnie!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operacja zakończona sukcesem.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Błąd podczas otwierania %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Wybierz folder...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Właściwości</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Właściwości tej gry nie mogły zostać załadowane.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Plik wykonywalny Switcha (%1);;Wszystkie pliki (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Załaduj plik...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Otwórz folder wypakowanego ROMu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Wybrano niewłaściwy folder</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Folder wybrany przez ciebie nie zawiera &apos;głownego&apos; pliku.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Instalacyjne pliki Switch&apos;a (*.nca *.nsp *.xci);;Archiwum zawartości Nintendo (*.nca);;Pakiet poddany Nintendo (*.nsp);;Obraz z kartridża NX (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Zainstaluj pliki</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>1 plik został</numerusform><numerusform>%n plików zostało</numerusform><numerusform>%n plików zostało</numerusform><numerusform>%n plików zostało</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalowanie pliku &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Wynik instalacji</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Aby uniknąć ewentualnych konfliktów, odradzamy użytkownikom instalowanie gier na NAND.
Proszę, używaj tej funkcji tylko do instalowania łatek i DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>1 nowy plik został zainstalowany
@@ -4328,380 +4264,414 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC.</translation>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>1 plik został nadpisany</numerusform><numerusform>%n plików zostało nadpisane</numerusform><numerusform>%n plików zostało nadpisane</numerusform><numerusform>%n plików zostało nadpisane</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>1 pliku nie udało się zainstalować</numerusform><numerusform>%n plików nie udało się zainstalować</numerusform><numerusform>%n plików nie udało się zainstalować</numerusform><numerusform>%n plików nie udało się zainstalować</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplikacja systemowa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Archiwum systemu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Aktualizacja aplikacji systemowej</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Paczka systemowa (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Paczka systemowa (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Gra</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Aktualizacja gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Dodatek do gry</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Tytuł Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Wybierz typ instalacji NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Wybierz typ tytułu, do którego chcesz zainstalować ten NCA, jako:
(W większości przypadków domyślna &quot;gra&quot; jest w porządku.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Instalacja nieudana</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Typ tytułu wybrany dla NCA jest nieprawidłowy.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Nie znaleziono pliku</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Nie znaleziono pliku &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Brakuje konta Yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Aby przesłać test zgodności gry, musisz połączyć swoje konto yuzu.&lt;br&gt;&lt;br/&gt; Aby połączyć swoje konto yuzu, przejdź do opcji Emulacja &amp;gt; Konfiguracja &amp;gt; Sieć.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Błąd otwierania adresu URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Nie można otworzyć adresu URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Nagrywanie TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Nadpisać plik gracza 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Wykryto nieprawidłową konfigurację</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Nie można używać kontrolera handheld w trybie zadokowanym. Zostanie wybrany kontroler Pro.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Plik Amiibo (%1);;Wszyskie pliki (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Załaduj Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Błąd otwarcia pliku danych Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Nie można otworzyć pliku Amiibo &quot;%1&quot; do odczytu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Błąd podczas odczytu pliku danych Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Nie można w pełni odczytać danych Amiibo. Oczekiwano odczytu %1 bajtów, ale był on w stanie odczytać tylko %2 bajty.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Błąd podczas ładowania pliku danych Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Nie można załadować danych Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Zrób zrzut ekranu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Obrazek PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
- <translation type="unfinished"/>
+ <translation>Status TAS: Działa %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
- <translation type="unfinished"/>
+ <translation>Status TAS: Nagrywa %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
- <translation type="unfinished"/>
+ <translation>Status TAS: Bezczynny %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Status TAS: Niepoprawny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Wyłącz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Przestań N&amp;agrywać</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>N&amp;agraj</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Budowanie shadera</numerusform><numerusform>Budowanie: %n shaderów</numerusform><numerusform>Budowanie: %n shaderów</numerusform><numerusform>Budowanie: %n shaderów</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Skala: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Prędkość: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Prędkość: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Gra: %1 FPS (Odblokowane)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Gra: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Klatka: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMALNE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU WYSOKIE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EKSTREMALNE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>BŁĄD GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>NAJBLIŻSZY</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEARNY</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BIKUBICZNY</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>BEZ AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Gra, którą próbujesz wczytać, wymaga dodatkowych plików z Switch&apos;a, które zostaną zrzucone przed graniem.&lt;br/&gt;&lt;br/&gt; Aby uzyskać więcej informacji na temat wyrzucania tych plików, odwiedź następującą stronę wiki:&lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt; Zrzut archiw systemu i udostępnionych czcionek z konsoli Nintendo Switch&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Czy chcesz wrócić do listy gier? Kontynuacja emulacji może spowodować awarie, uszkodzone dane zapisu lub inne błędy.
</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu nie był w stanie znaleźć archiwum systemu Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu nie był w stanie znaleźć archiwum systemu Switch. %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Archiwum systemu nie znalezione.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Brak archiwum systemowego</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu nie był w stanie zlokalizować czcionek Switch&apos;a. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Czcionki nie zostały znalezione</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Brak wspólnej czcionki</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Fatalny błąd</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu napotkał błąd, proszę zobaczyć log po więcej szczegółów. Aby uzyskać więcej informacji na temat uzyskiwania dostępu do pliku log, zobacz następującą stronę: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Jak przesłać plik log&lt;/a&gt;?&lt;br/&gt;&lt;br/&gt; Czy chcesz wrócić do listy gier? Kontynuacja emulacji może spowodować awarie, uszkodzone dane zapisu lub inne błędy.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Wystąpił błąd krytyczny</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Potwierdź ponowną aktywacje klucza</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4718,37 +4688,37 @@ i opcjonalnie tworzyć kopie zapasowe.
Spowoduje to usunięcie wygenerowanych automatycznie plików kluczy i ponowne uruchomienie modułu pochodnego klucza.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Brakujące bezpieczniki</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - Brak BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Brak BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - Brak PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Brak komponentów wyprowadzania</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Brakuje elementów, które mogą uniemożliwić zakończenie wyprowadzania kluczy. &lt;br&gt;Postępuj zgodnie z &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu quickstart guide&lt;/a&gt; aby zdobyć wszystkie swoje klucze i gry.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4757,39 +4727,39 @@ Zależnie od tego może potrwać do minuty
na wydajność twojego systemu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Wyprowadzanie kluczy...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Wybierz cel zrzutu RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Proszę wybrać RomFS, jakie chcesz zrzucić.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Czy na pewno chcesz zamknąć yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Czy na pewno chcesz zatrzymać emulację? Wszystkie niezapisane postępy zostaną utracone.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -4892,7 +4862,7 @@ Czy chcesz to ominąć i mimo to wyjść?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="544"/>
<source>Open Transferable Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Otwórz Transferowalną Pamięć Podręczną Pipeline</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="546"/>
@@ -4917,17 +4887,17 @@ Czy chcesz to ominąć i mimo to wyjść?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="550"/>
<source>Remove OpenGL Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Usuń Pamięć Podręczną Pipeline OpenGL</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="551"/>
<source>Remove Vulkan Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Usuń Pamięć Podręczną Pipeline Vulkan</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="553"/>
<source>Remove All Pipeline Caches</source>
- <translation type="unfinished"/>
+ <translation>Usuń całą pamięć podręczną Pipeline</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="554"/>
@@ -5286,7 +5256,7 @@ startowy.</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="200"/>
<source>&amp;Reinitialize keys...</source>
- <translation type="unfinished"/>
+ <translation>&amp;Zainicjuj ponownie klucze...</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="205"/>
@@ -5306,12 +5276,12 @@ startowy.</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="226"/>
<source>Display D&amp;ock Widget Headers</source>
- <translation type="unfinished"/>
+ <translation>Wyłącz Nagłówek Widżetu Docku</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="234"/>
<source>Show &amp;Filter Bar</source>
- <translation type="unfinished"/>
+ <translation>Pokaż &amp;Pasek Filtrów</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="242"/>
@@ -5335,8 +5305,8 @@ startowy.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Załaduj &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5399,7 +5369,7 @@ startowy.</translation>
<message>
<location filename="../../src/yuzu/debugger/profiler.cpp" line="51"/>
<source>&amp;MicroProfile</source>
- <translation type="unfinished"/>
+ <translation>&amp;MikroProfil</translation>
</message>
</context>
<context>
@@ -5438,15 +5408,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>START/PAUZA</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Ładowanie</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5495,8 +5460,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[nie ustawione]</translation>
</message>
@@ -5507,10 +5472,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Oś %1%2</translation>
</message>
@@ -5521,9 +5486,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[nieznane]</translation>
</message>
@@ -5649,76 +5614,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Dotyk</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>Kółko</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>Do tyłu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>Do przodu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>Zadanie</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>Dodatkowe</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[niezdefiniowane]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[niepoprawne]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Drążek %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Oś %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
- <translation type="unfinished"/>
+ <translation>%1%2Oś %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Ruch %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Przycisk %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[nieużywane]</translation>
</message>
@@ -6263,7 +6238,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="468"/>
<source>&amp;Wait Tree</source>
- <translation type="unfinished"/>
+ <translation>&amp;Drzewo Czekania</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts
index fce59db8f..89d9a348f 100644
--- a/dist/languages/pt_BR.ts
+++ b/dist/languages/pt_BR.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Toque no canto superior esquerdo &lt;br&gt;do seu touchpad</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Agora toque no canto inferior direito &lt;br&gt;do seu touchpad</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configuração concluída!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -900,49 +900,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Restaurar cache de metadados</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Selecione a pasta da NAND emulada...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Selecione a pasta do SD emulado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Selecione o local do Gamecard...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Selecione a pasta de extração...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Selecione a pasta de carregamento de mods...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>O cache de metadados já está vazio.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>A operação foi concluída com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>O cache de metadados não pôde ser excluído. Ele pode estar em uso no momento ou não existe.</translation>
</message>
@@ -1003,36 +1003,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Confirmar saída quando a emulação estiver em execução</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Escolher um usuário ao iniciar um jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausar emulação quando a janela ficar em segundo plano</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation>Silenciar audio quando a janela ficar em segundo plano</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Esconder cursor do mouse quando em inatividade</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Redefinir todas as configurações</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Isto restaura todas as configurações e exclui as configurações individuais de todos os jogos. As pastas de jogos, perfis de jogos e perfis de controles não serão excluídos. Deseja prosseguir?</translation>
</message>
@@ -1420,86 +1430,6 @@ p, li { white-space: pre-wrap; }
<translation>[aguardando]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation>Direcional para a esquerda</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation>Direcional para a direita</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation>Direcional para cima</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation>Direcional para baixo</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation>Analógico esquerdo</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation>Analógico direito</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Menos</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Mais</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>Inválido</translation>
@@ -1847,7 +1777,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
<source>Controller navigation</source>
- <translation>Navegação do controle</translation>
+ <translation>Navegação com controle</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
@@ -1909,7 +1839,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Analógico esquerdo</translation>
</message>
@@ -2003,14 +1933,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2029,7 +1959,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Mais</translation>
</message>
@@ -2042,15 +1972,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2107,225 +2037,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Analógico direito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[não definido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Alternar pressionamento do botão</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Inverter botão</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Inverter eixo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Definir limite</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Escolha um valor entre 0% e 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>Definir limite do giroscópio</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Mapear analógico</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Após pressionar OK, mova o seu direcional analógico primeiro horizontalmente e depois verticalmente.
Para inverter os eixos, mova seu analógico primeiro verticalmente e depois horizontalmente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation>Eixo central</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Zona morta: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Alcance de modificador: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Par de Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon Esquerdo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon Direito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Portátil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Controle de GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Controle NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Controle SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Controle N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Mega Drive</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Iniciar / Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Direcional de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Balance!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[esperando]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Novo perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Insira um nome para o perfil:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Criar perfil de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>O nome de perfil inserido não é válido!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Falha ao criar o perfil de controle &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Excluir perfil de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Falha ao excluir o perfil de controle &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Carregar perfil de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Falha ao carregar o perfil de controle &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Salvar perfil de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Falha ao salvar o perfil de controle &quot;%1&quot;</translation>
</message>
@@ -2373,7 +2308,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configurar</translation>
</message>
@@ -2409,7 +2344,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Teste</translation>
</message>
@@ -2424,82 +2359,82 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori
<translation>Excluir servidor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Saiba mais&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>O número da porta tem caracteres inválidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>A porta tem que estar entre 0 e 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>O endereço IP não é válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Este servidor UDP já existe</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Não é possível adicionar mais de 8 servidores</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configurando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Teste bem-sucedido</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation> Dados foram recebidos do servidor com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>O teste falhou</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Não foi possível receber dados válidos do servidor.&lt;br&gt;Verifique se o servidor foi configurado corretamente e o endereço e porta estão corretos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Um teste UDP ou configuração de calibração está em curso no momento.&lt;br&gt;Aguarde até a sua conclusão.</translation>
</message>
@@ -3411,7 +3346,7 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe
<translation>Novo nome:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[pressione a tecla]</translation>
</message>
@@ -3626,68 +3561,73 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation>Pressione qualquer botão para vibrar o controle.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibração</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Jogador 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Jogador 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Jogador 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Jogador 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Jogador 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Jogador 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Jogador 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Jogador 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Ativar vibração precisa</translation>
</message>
@@ -3895,440 +3835,430 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe
<translation>Tempo que leva para emular um quadro do Switch, sem considerar o limitador de taxa de quadros ou a sincronização vertical. Um valor menor ou igual a 16.67 ms indica que a emulação está em velocidade plena.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Configuração inválida detectada</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>O controle portátil não pode ser usado no modo encaixado na base. O Pro Controller será selecionado.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>NA BASE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Limpar arquivos recentes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu está rodando um jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Aviso - formato de jogo desatualizado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Você está usando neste jogo o formato de ROM desconstruída e extraída em uma pasta, que é um formato desatualizado que foi substituído por outros, como NCA, NAX, XCI ou NSP. Pastas desconstruídas de ROMs não possuem ícones, metadados e suporte a atualizações.&lt;br&gt;&lt;br&gt;Para saber mais sobre os vários formatos de ROMs de Switch compatíveis com o yuzu, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;confira a nossa wiki&lt;/a&gt;. Esta mensagem não será exibida novamente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Erro ao carregar a ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>O formato da ROM não é suportado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Ocorreu um erro ao inicializar o núcleo de vídeo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu encontrou um erro enquanto rodando o núcleo de vídeo. Normalmente isto é causado por drivers de GPU desatualizados, incluindo integrados. Por favor veja o registro para mais detalhes. Para mais informações em acesso ao registro por favor veja a seguinte página: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Como fazer envio de arquivo de registro&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Erro ao carregar a ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Por favor, siga &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;o guia de início rápido&lt;/a&gt; para reextrair os seus arquivos.&lt;br&gt;Você pode consultar a wiki do yuzu&lt;/a&gt; ou o Discord do yuzu&lt;/a&gt; para obter ajuda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Ocorreu um erro desconhecido. Consulte o registro para mais detalhes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Dados de jogos salvos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Dados de mods</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Erro ao abrir a pasta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>A pasta não existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Erro ao abrir o cache de shaders transferível</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Falha ao criar o diretório de cache de shaders para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Conteúdo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Atualização</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Remover item</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Remover o jogo instalado %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Removido com sucesso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>O jogo base foi removido com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Erro ao remover %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>O jogo base não está instalado na NAND e não pode ser removido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>A atualização instalada foi removida com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Não há nenhuma atualização instalada para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Não há nenhum DLC instalado para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 DLC(s) instalados foram removidos com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Apagar o cache de shaders transferível do OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Apagar o cache de shaders transferível do Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Apagar todos os caches de shaders transferíveis?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Remover configurações customizadas do jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Remover arquivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Erro ao remover cache de shaders transferível</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Não existe um cache de shaders para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>O cache de shaders transferível foi removido com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Falha ao remover o cache de shaders transferível.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Erro ao remover os caches de shaders transferíveis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Os caches de shaders transferíveis foram removidos com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Falha ao remover o diretório do cache de shaders transferível.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Erro ao remover as configurações customizadas do jogo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Não há uma configuração customizada para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>As configurações customizadas do jogo foram removidas com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Falha ao remover as configurações customizadas do jogo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Falha ao extrair RomFS!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Houve um erro ao copiar os arquivos RomFS ou o usuário cancelou a operação.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Extração completa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Apenas estrutura</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Selecione o modo de extração do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Selecione a forma como você gostaria que o RomFS seja extraído.&lt;br&gt;&quot;Extração completa&quot; copiará todos os arquivos para a nova pasta, enquanto que &lt;br&gt;&quot;Apenas estrutura&quot; criará apenas a estrutura de pastas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>Não há espaço suficiente em %1 para extrair o RomFS. Por favor abra espaço ou selecione um diretório diferente em Emulação &gt; Configurar &gt; Sistema &gt; Sistema de arquivos &gt; Extrair raiz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extraindo RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extração do RomFS concluida!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>A operação foi concluída com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Erro ao abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Selecionar pasta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Propriedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>As propriedades do jogo não puderam ser carregadas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Executável do Switch (%1);;Todos os arquivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Carregar arquivo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Abrir pasta da ROM extraída</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Pasta inválida selecionada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>A pasta que você selecionou não contém um arquivo &apos;main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Arquivo de Switch instalável (*.nca *.nsp *.xci);; Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Instalar arquivos</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n arquivo restante</numerusform><numerusform>%n arquivo(s) restante(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando arquivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Resultados da instalação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Para evitar possíveis conflitos, desencorajamos que os usuários instalem os jogos base na NAND.
Por favor, use esse recurso apenas para instalar atualizações e DLCs.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n arquivo(s) instalado(s)
@@ -4336,7 +4266,7 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs.</transla
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n arquivo(s) sobrescrito(s)
@@ -4344,7 +4274,7 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs.</transla
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n arquivo(s) não instalado(s)
@@ -4352,367 +4282,401 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs.</transla
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Atualização de aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Pacote de firmware (tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Pacote de firmware (tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Atualização de jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC de jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Título delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Selecione o tipo de instalação do NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Selecione o tipo de título como o qual você gostaria de instalar este NCA:
(Na maioria dos casos, o padrão &apos;Jogo&apos; serve bem.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Falha ao instalar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>O tipo de título que você selecionou para o NCA é inválido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Arquivo não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Arquivo &quot;%1&quot; não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Conta do yuzu faltando</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Para enviar um caso de teste de compatibilidade de jogo, você precisa entrar com a sua conta do yuzu.&lt;br&gt;&lt;br/&gt;Para isso, vá para Emulação &amp;gt; Configurar... &amp;gt; Rede.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Erro ao abrir URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Não foi possível abrir o URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Gravando TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Sobrescrever arquivo do jogador 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Configuração inválida detectada</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>O controle portátil não pode ser usado no modo encaixado na base. O Pro Controller será selecionado.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation>Erro</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation>O jogo atual não está procurando amiibos</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arquivo Amiibo (%1);; Todos os arquivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Erro ao abrir arquivo de dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Não foi possível abrir o arquivo de Amiibo &quot;%1&quot; para leitura.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Erro ao ler arquivo de dados de Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Não foi possível ler completamente os dados do Amiibo. O yuzu esperava ler %1 bytes, mas foi capaz de ler apenas %2 bytes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Erro ao carregar dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Não foi possível carregar os dados do Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Capturar tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Imagem PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Situação TAS: Rodando %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Situação TAS: Gravando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Situação TAS: Repouso %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Situação TAS: Inválido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Parar de rodar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Iniciar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Parar G&amp;ravação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>G&amp;ravação</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Compilando: %n shader(s)</numerusform><numerusform>Compilando: %n shader(s)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Escala: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidade: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Velocidade: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Jogo: %1 FPS (Desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Jogo: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Quadro: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU ALTA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREMA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>ERRO DE GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>VIZINHO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICÚBICO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSSIANO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>Sem AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>O jogo que você está tentando carregar precisa que arquivos adicionais do seu Switch sejam extraídos antes de jogá-lo.&lt;br/&gt;&lt;br/&gt;Para saber mais sobre como extrair esses arquivos, visite a seguinte página da wiki: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Extraindo arquivos de sistema e fontes compartilhadas de um Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt; Gostaria de voltar para a lista de jogos? Continuar com a emulação pode resultar em travamentos, dados salvos corrompidos ou outros problemas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>O yuzu não foi capaz de encontrar um arquivo de sistema do Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>O yuzu não foi capaz de encontrar um arquivo de sistema do Switch. %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Arquivo do sistema não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Arquivo de sistema faltando</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>O yuzu não foi capaz de encontrar as fontes compartilhadas do Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Fontes compartilhadas não encontradas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Fonte compartilhada faltando</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Erro fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>O yuzu encontrou um erro fatal. Consulte o registro para mais detalhes. Para mais informações sobre como acessar o registro, consulte a seguinte página: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Como enviar o arquivo de registro&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Gostaria de voltar para a lista de jogos? Continuar com a emulação pode resultar em travamentos, dados salvos corrompidos ou outros problemas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Erro fatal encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Confirmar rederivação de chave</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4729,37 +4693,37 @@ e opcionalmente faça cópias de segurança.
Isto excluirá o seus arquivos de chaves geradas automaticamente, e reexecutar o módulo de derivação de chaves.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Faltando fusíveis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation> - Faltando BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - Faltando BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation> - Faltando PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Faltando componentes de derivação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Chaves de encriptação faltando. &lt;br&gt;Por favor, siga &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;o guia de início rápido&lt;/a&gt; para extrair suas chaves, firmware e jogos. &lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4768,39 +4732,39 @@ Isto pode demorar até um minuto, dependendo
do desempenho do seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Derivando chaves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Selecionar alvo de extração do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Selecione qual RomFS você quer extrair.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Você deseja mesmo fechar o yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Deseja mesmo parar a emulação? Qualquer progresso não salvo será perdido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5346,8 +5310,8 @@ tela inicial do jogo.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Carregar &amp;amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation>Carregar/Remover &amp;Amiibo...</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5449,15 +5413,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>INICIAR/PAUSAR</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Carregando</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5506,8 +5465,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[não definido]</translation>
</message>
@@ -5518,10 +5477,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Eixo %1%2</translation>
</message>
@@ -5532,9 +5491,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[desconhecido]</translation>
</message>
@@ -5660,76 +5619,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Botão Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Toque</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>Volante</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>Para trás</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>Para a frente</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>Tarefa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>Extra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[indefinido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[inválido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Direcional %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Eixo %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Eixo %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Movimentação %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Botão %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[não utilizado]</translation>
</message>
@@ -5970,12 +5939,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="449"/>
<source>NES Controller</source>
- <translation>Controle do Nintendinho</translation>
+ <translation>Controle do NES</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="453"/>
<source>SNES Controller</source>
- <translation>Controle do Super Nintendo</translation>
+ <translation>Controle do SNES</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="457"/>
diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts
index c84a2f29c..571e39158 100644
--- a/dist/languages/pt_PT.ts
+++ b/dist/languages/pt_PT.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Toca no canto superior esquerdo &lt;br&gt;do teu touchpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Agora toca no canto inferior direito &lt;br&gt; do teu touchpad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Configuração completa!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -183,7 +183,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/compatdb.cpp" line="73"/>
<source>An error occurred while sending the Testcase</source>
- <translation type="unfinished"/>
+ <translation>Um erro ocorreu ao enviar o caso de teste</translation>
</message>
<message>
<location filename="../../src/yuzu/compatdb.cpp" line="75"/>
@@ -276,7 +276,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="63"/>
<source>We recommend setting accuracy to &quot;Auto&quot;.</source>
- <translation type="unfinished"/>
+ <translation>Recomendamos definir a precisão para &quot;Automático&quot;.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="80"/>
@@ -319,19 +319,23 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;Esta opção melhora a velocidade das funções de ponto flutuante ASIMD de 32 bits ao rodar com modos de arredondamento incorretos.&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="125"/>
<source>Faster ASIMD instructions (32 bits only)</source>
- <translation type="unfinished"/>
+ <translation>Instruções ASIMD mais rápidas (apenas 32 bits)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="132"/>
<source>
&lt;div&gt;This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;Esta opção melhora a velocidade ao remover a verificação de valores não numerais. Por outro lado, ela reduz a precisão de certas instruções de ponto flutuante.&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="137"/>
@@ -343,12 +347,14 @@ p, li { white-space: pre-wrap; }
<source>
&lt;div&gt;This option improves speed by eliminating a safety check before every memory read/write in guest. Disabling it may allow a game to read/write the emulator's memory.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div&gt;Esta opção melhora a velocidade, eliminando uma verificação de segurança antes de cada leitura/gravação de memória no hóspede. A desativação pode permitir que um jogo leia/escreva a memória do emulador.&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="149"/>
<source>Disable address space checks</source>
- <translation type="unfinished"/>
+ <translation>Desativar a verificação do espaço de endereços</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu.ui" line="174"/>
@@ -376,7 +382,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="31"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;For debugging only.&lt;/span&gt;&lt;br/&gt;If you&apos;re not sure what these do, keep all of these enabled. &lt;br/&gt;These settings, when disabled, only take effect when CPU Debugging is enabled. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Apenas para depuração.&lt;/span&gt;&lt;br/&gt;Se você não tem certeza do que essas opções fazem, mantenha tudo ativado. &lt;br/&gt;Estas configurações, quando desativadas, só têm efeito quando a depuração da CPU é ativada. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="41"/>
@@ -495,12 +501,16 @@ p, li { white-space: pre-wrap; }
&lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.&lt;/div&gt;
&lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all memory accesses to use Software MMU Emulation.&lt;/div&gt;
</source>
- <translation type="unfinished"/>
+ <translation>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Esta otimização acelera o acesso à memória pelo programa do hóspede.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;A ativação faz com que as leituras/escritas na memória do hóspede sejam feitas diretamente na memória e façam uso da MMU do anfitrião.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Desativar isso força todos os acessos de memória a usar a emulação por software da MMU.&lt;/div&gt;
+ </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="147"/>
<source>Enable Host MMU Emulation</source>
- <translation type="unfinished"/>
+ <translation>Ativar emulação da MMU do anfitrião</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="172"/>
@@ -538,7 +548,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="49"/>
<source>Enable Extended Logging**</source>
- <translation type="unfinished"/>
+ <translation>Ativar registros avançados**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="59"/>
@@ -558,7 +568,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="91"/>
<source>When checked, the graphics API enters a slower debugging mode</source>
- <translation type="unfinished"/>
+ <translation>Quando ativado, a API gráfica entra em um modo de depuração mais lento.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="94"/>
@@ -568,27 +578,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="101"/>
<source>When checked, it enables Nsight Aftermath crash dumps</source>
- <translation type="unfinished"/>
+ <translation>Quando ativado, ativa a extração de registros de travamento do Nsight Aftermath</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="104"/>
<source>Enable Nsight Aftermath</source>
- <translation type="unfinished"/>
+ <translation>Ativar Nsight Aftermath</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="114"/>
<source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
- <translation type="unfinished"/>
+ <translation>Se selecionado, descarrega todos os shaders originários do cache do disco ou do jogo conforme encontrá-los.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="117"/>
<source>Dump Game Shaders</source>
- <translation type="unfinished"/>
+ <translation>Descarregar shaders do jogo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="127"/>
<source>When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower</source>
- <translation type="unfinished"/>
+ <translation>Quando ativado, desativa o macro compilador Just In Time. Ativar isto faz os jogos rodarem mais lentamente.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="130"/>
@@ -598,22 +608,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="137"/>
<source>When checked, yuzu will log statistics about the compiled pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Quando ativado, o yuzu registrará estatísticas sobre o cache de pipeline compilado</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="140"/>
<source>Enable Shader Feedback</source>
- <translation type="unfinished"/>
+ <translation>Ativar Feedback de Shaders</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="147"/>
<source>When checked, it executes shaders without loop logic changes</source>
- <translation type="unfinished"/>
+ <translation>Quando ativado, executa shaders sem mudanças de lógica de loop</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="150"/>
<source>Disable Loop safety checks</source>
- <translation type="unfinished"/>
+ <translation>Desativar verificação de segurança de loops</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="160"/>
@@ -623,12 +633,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="166"/>
<source>Enable FS Access Log</source>
- <translation type="unfinished"/>
+ <translation>Ativar acesso de registro FS</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="173"/>
<source>Enable Verbose Reporting Services**</source>
- <translation type="unfinished"/>
+ <translation>Ativar serviços de relatório detalhado**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="183"/>
@@ -643,27 +653,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="196"/>
<source>Enable CPU Debugging</source>
- <translation type="unfinished"/>
+ <translation>Ativar depuração de CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="203"/>
<source>Enable Debug Asserts</source>
- <translation type="unfinished"/>
+ <translation>Ativar asserções de depuração</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="210"/>
<source>Enable Auto-Stub**</source>
- <translation type="unfinished"/>
+ <translation>Ativar auto-esboço**</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="217"/>
<source>Enable all Controller Types</source>
- <translation type="unfinished"/>
+ <translation>Ativar todos os tipos de controles</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_debug.ui" line="232"/>
<source>**This will be reset automatically when yuzu closes.</source>
- <translation type="unfinished"/>
+ <translation>**Isto será restaurado automaticamente assim que o yuzu for fechado.</translation>
</message>
</context>
<context>
@@ -768,7 +778,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="69"/>
<source>Network</source>
- <translation type="unfinished"/>
+ <translation>Rede</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="70"/>
@@ -880,49 +890,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Resetar a Cache da Metadata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Selecione o Diretório NAND Emulado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Selecione o Diretório SD Emulado...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Selecione o Diretório do Cartão de Jogo...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Selecionar o diretório do Dump...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Selecionar o Diretório do Mod Load ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>O cache de metadata já está vazio.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>A operação foi completa com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Não foi possível excluir o cache de metadata. Pode estar em uso ou inexistente.</translation>
</message>
@@ -944,27 +954,27 @@ p, li { white-space: pre-wrap; }
<location filename="../../src/yuzu/configuration/configure_general.ui" line="50"/>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="57"/>
<source>Use global framerate cap</source>
- <translation type="unfinished"/>
+ <translation>Usar limite global de taxa de quadros</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="62"/>
<source>Set framerate cap:</source>
- <translation type="unfinished"/>
+ <translation>Definir limite de taxa de quadros:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="70"/>
<source>Requires the use of the FPS Limiter Toggle hotkey to take effect.</source>
- <translation type="unfinished"/>
+ <translation>Requer o uso de atalho do limitador de FPS para ter efeito.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="73"/>
<source>Framerate Cap</source>
- <translation type="unfinished"/>
+ <translation>Limite da taxa de quadros</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="95"/>
<source>x</source>
- <translation type="unfinished"/>
+ <translation>x</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="116"/>
@@ -983,36 +993,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Confirme a saída enquanto a emulação está em execução</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Solicitar para o utilizador na inicialização do jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausar o emulador quando estiver em segundo plano</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation>Silenciar audio quando a janela ficar em segundo plano</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Esconder rato quando inactivo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Restaurar todas as configurações</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Isto restaura todas as configurações e remove as configurações específicas de cada jogo. As pastas de jogos, perfis de jogos e perfis de controlo não serão removidos. Continuar?</translation>
</message>
@@ -1037,7 +1057,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="64"/>
<source>Shader Backend:</source>
- <translation type="unfinished"/>
+ <translation>Suporte de shaders:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="92"/>
@@ -1057,7 +1077,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="162"/>
<source>Use disk pipeline cache</source>
- <translation type="unfinished"/>
+ <translation>Usar cache de pipeline em disco</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="169"/>
@@ -1067,27 +1087,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="176"/>
<source>Accelerate ASTC texture decoding</source>
- <translation type="unfinished"/>
+ <translation>Acelerar a decodificação de textura ASTC</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="198"/>
<source>NVDEC emulation:</source>
- <translation type="unfinished"/>
+ <translation>Emulação NVDEC:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="206"/>
<source>No Video Output</source>
- <translation type="unfinished"/>
+ <translation>Sem saída de vídeo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="211"/>
<source>CPU Video Decoding</source>
- <translation type="unfinished"/>
+ <translation>Decodificação de vídeo pela CPU</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="216"/>
<source>GPU Video Decoding (Default)</source>
- <translation type="unfinished"/>
+ <translation>Decodificação de vídeo pela GPU (Padrão)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="242"/>
@@ -1132,87 +1152,87 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="330"/>
<source>Resolution:</source>
- <translation type="unfinished"/>
+ <translation>Resolução:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="338"/>
<source>0.5X (360p/540p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.5X (360p/540p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="343"/>
<source>0.75X (540p/810p) [EXPERIMENTAL]</source>
- <translation type="unfinished"/>
+ <translation>0.75X (540p/810p) [EXPERIMENTAL]</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="348"/>
<source>1X (720p/1080p)</source>
- <translation type="unfinished"/>
+ <translation>1X (720p/1080p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="353"/>
<source>2X (1440p/2160p)</source>
- <translation type="unfinished"/>
+ <translation>2X (1440p/2160p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="358"/>
<source>3X (2160p/3240p)</source>
- <translation type="unfinished"/>
+ <translation>3X (2160p/3240p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="363"/>
<source>4X (2880p/4320p)</source>
- <translation type="unfinished"/>
+ <translation>4X (2880p/4320p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="368"/>
<source>5X (3600p/5400p)</source>
- <translation type="unfinished"/>
+ <translation>5X (3600p/5400p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="373"/>
<source>6X (4320p/6480p)</source>
- <translation type="unfinished"/>
+ <translation>6X (4320p/6480p)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="399"/>
<source>Window Adapting Filter:</source>
- <translation type="unfinished"/>
+ <translation>Filtro de adaptação de janela:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="407"/>
<source>Nearest Neighbor</source>
- <translation type="unfinished"/>
+ <translation>Vizinho mais próximo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="412"/>
<source>Bilinear</source>
- <translation type="unfinished"/>
+ <translation>Bilinear</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="417"/>
<source>Bicubic</source>
- <translation type="unfinished"/>
+ <translation>Bicúbico</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="422"/>
<source>Gaussian</source>
- <translation type="unfinished"/>
+ <translation>Gaussiano</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="427"/>
<source>ScaleForce</source>
- <translation type="unfinished"/>
+ <translation>ScaleForce</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="432"/>
<source>AMD FidelityFX™️ Super Resolution (Vulkan Only)</source>
- <translation type="unfinished"/>
+ <translation>AMD FidelityFX™️ Super Resolution (somente Vulkan)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="458"/>
<source>Anti-Aliasing Method:</source>
- <translation type="unfinished"/>
+ <translation>Método de Anti-Aliasing</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="466"/>
@@ -1222,7 +1242,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="471"/>
<source>FXAA</source>
- <translation type="unfinished"/>
+ <translation>FXAA</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.ui" line="506"/>
@@ -1243,7 +1263,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="34"/>
<source>GLASM (Assembly Shaders, NVIDIA Only)</source>
- <translation type="unfinished"/>
+ <translation>GLASM (Shaders Assembly, apenas NVIDIA)</translation>
</message>
</context>
<context>
@@ -1286,17 +1306,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="88"/>
<source>Use asynchronous shader building (Hack)</source>
- <translation type="unfinished"/>
+ <translation>Usar compilação assíncrona de shaders (Hack)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="95"/>
<source>Enables Fast GPU Time. This option will force most games to run at their highest native resolution.</source>
- <translation type="unfinished"/>
+ <translation>Ativa um tempo de resposta rápido da GPU. Esta opção forçará a maioria dos jogos a rodar em sua resolução nativa mais alta.</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="98"/>
<source>Use Fast GPU Time (Hack)</source>
- <translation type="unfinished"/>
+ <translation>Usar tempo de resposta rápido da GPU (Hack)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="120"/>
@@ -1306,7 +1326,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="128"/>
<source>Automatic</source>
- <translation type="unfinished"/>
+ <translation>Automático</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="133"/>
@@ -1374,7 +1394,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
<source>Controller Hotkey</source>
- <translation type="unfinished"/>
+ <translation>Atalho do controle</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="124"/>
@@ -1392,7 +1412,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="144"/>
<source>Home+%1</source>
- <translation type="unfinished"/>
+ <translation>Home+%1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="158"/>
@@ -1400,89 +1420,9 @@ p, li { white-space: pre-wrap; }
<translation>[em espera]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Menos</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Mais</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
- <translation type="unfinished"/>
+ <translation>Inválido</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="329"/>
@@ -1497,12 +1437,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="351"/>
<source>Conflicting Button Sequence</source>
- <translation type="unfinished"/>
+ <translation>Sequência de botões conflitante</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="352"/>
<source>The default button sequence is already assigned to: %1</source>
- <translation type="unfinished"/>
+ <translation>A sequência de botões padrão já está vinculada a %1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="366"/>
@@ -1766,7 +1706,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2533"/>
<source>Emulated Devices</source>
- <translation type="unfinished"/>
+ <translation>Dispositivos emulados</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2545"/>
@@ -1812,27 +1752,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2631"/>
<source>Requires restarting yuzu</source>
- <translation type="unfinished"/>
+ <translation>Requer reiniciar o yuzu</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2640"/>
<source>Enable XInput 8 player support (disables web applet)</source>
- <translation type="unfinished"/>
+ <translation>Ativar suporte para 8 jogadores XInput (desabilita o applet da web)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2653"/>
<source>Enable UDP controllers (not needed for motion)</source>
- <translation type="unfinished"/>
+ <translation>Ativar controles UDP (não necessário para movimento)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
<source>Controller navigation</source>
- <translation type="unfinished"/>
+ <translation>Navegação com controle</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
<source>Enable mouse panning</source>
- <translation type="unfinished"/>
+ <translation>Ativar o giro do mouse</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2686"/>
@@ -1889,7 +1829,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Analógico Esquerdo</translation>
</message>
@@ -1983,14 +1923,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2009,7 +1949,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Mais</translation>
</message>
@@ -2022,15 +1962,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2087,225 +2027,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Analógico Direito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[não definido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
- <translation type="unfinished"/>
+ <translation>Alternar pressionamento do botão</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
- <translation type="unfinished"/>
+ <translation>Inverter botão</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Inverter eixo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
- <translation type="unfinished"/>
+ <translation>Definir limite</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
- <translation type="unfinished"/>
+ <translation>Escolha um valor entre 0% e 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>Definir limite do giroscópio</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Mapear analógicos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Após pressionar OK, mova o seu analógico primeiro horizontalmente e depois verticalmente.
Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois horizontalmente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation>Eixo central</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Ponto Morto: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modificador de Alcance: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Comando Pro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joycons Duplos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon Esquerdo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon Direito</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Portátil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Controlador de depuração</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
- <translation type="unfinished"/>
+ <translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
- <translation type="unfinished"/>
+ <translation>Mega Drive</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Iniciar / Pausar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
- <translation type="unfinished"/>
+ <translation>Direcional de controle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Abane!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[em espera]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Novo Perfil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Introduza um novo nome de perfil:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Criar perfil de controlo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>O nome de perfil dado não é válido!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Falha ao criar o perfil de controlo &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Apagar Perfil de Controlo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Falha ao apagar o perfil de controlo &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Carregar perfil de controlo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Falha ao carregar o perfil de controlo &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Guardar perfil de controlo</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Falha ao guardar o perfil de controlo &quot;%1&quot;</translation>
</message>
@@ -2353,14 +2298,14 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Configurar</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="57"/>
<source>Touch from button profile:</source>
- <translation type="unfinished"/>
+ <translation>Tocar botão a partir de perfíl:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="85"/>
@@ -2389,7 +2334,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Testar</translation>
</message>
@@ -2404,82 +2349,82 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<translation>Remover Servidor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Saber Mais&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>O número da porta tem caracteres inválidos</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>A porta tem que estar entre 0 e 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>O endereço IP não é válido</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
- <translation type="unfinished"/>
+ <translation>Este servidor UDP já existe</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Não é possível adicionar mais de 8 servidores</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Configurando</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Teste Bem-Sucedido</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Dados recebidos do servidor com êxito.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Teste Falhou</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Não foi possível receber dados válidos do servidor.&lt;br&gt;Por favor verifica que o servidor está configurado correctamente e o endereço e porta estão correctos.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Teste UDP ou configuração de calibragem em progresso.&lt;br&gt; Por favor espera que termine.</translation>
</message>
@@ -2494,7 +2439,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_network.ui" line="17"/>
<source>Network</source>
- <translation type="unfinished"/>
+ <translation>Rede</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_network.ui" line="25"/>
@@ -2504,7 +2449,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_network.ui" line="34"/>
<source>Network Interface</source>
- <translation type="unfinished"/>
+ <translation>Interface de rede</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_network.cpp" line="17"/>
@@ -2771,12 +2716,12 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="314"/>
<source>Error resizing user image</source>
- <translation type="unfinished"/>
+ <translation>Erro no redimensionamento da imagem do usuário</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="315"/>
<source>Unable to resize image</source>
- <translation type="unfinished"/>
+ <translation>Não foi possível redimensionar a imagem</translation>
</message>
</context>
<context>
@@ -3160,7 +3105,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="409"/>
<source>Brazilian Portuguese (português do Brasil)</source>
- <translation type="unfinished"/>
+ <translation>Português do Brasil (Brazilian Portuguese)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_system.ui" line="417"/>
@@ -3238,22 +3183,22 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="11"/>
<source>TAS</source>
- <translation type="unfinished"/>
+ <translation>TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="17"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reads controller input from scripts in the same format as TAS-nx scripts.&lt;br/&gt;For a more detailed explanation, please consult the &lt;a href=&quot;https://yuzu-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;help page&lt;/span&gt;&lt;/a&gt; on the yuzu website.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Lê entradas de controle a partir de scripts no mesmo formato que TAS-nx. &lt;br/&gt;Para uma explicação mais detalhada, por favor consulte a &lt;a href=&quot;https://yuzu-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;página de ajuda&lt;/span&gt;&lt;/a&gt; no website do yuzu.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="24"/>
<source>To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -&gt; General -&gt; Hotkeys).</source>
- <translation type="unfinished"/>
+ <translation>Para checar que atalhos controlam rodar/gravar, por favor refira-se às Teclas de atalhos (Configurar -&gt; Geral -&gt; Teclas de atalhos)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="34"/>
<source>WARNING: This is an experimental feature.&lt;br/&gt;It will not play back scripts frame perfectly with the current, imperfect syncing method.</source>
- <translation type="unfinished"/>
+ <translation>ATENÇÃO: Este é um recurso experimental. &lt;br/&gt;Não irá rodar os scrips em quadros perfeitos com o atual, imperfeito método de sincronização. </translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="51"/>
@@ -3263,22 +3208,22 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="57"/>
<source>Enable TAS features</source>
- <translation type="unfinished"/>
+ <translation>Ativar funcionalidades TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="64"/>
<source>Loop script</source>
- <translation type="unfinished"/>
+ <translation>Repetir script em loop</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="74"/>
<source>Pause execution during loads</source>
- <translation type="unfinished"/>
+ <translation>Pausar execução durante carregamentos</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="88"/>
<source>Script Directory</source>
- <translation type="unfinished"/>
+ <translation>Diretório do script</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.ui" line="94"/>
@@ -3296,12 +3241,12 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
<message>
<location filename="../../src/yuzu/configuration/configure_tas.cpp" line="20"/>
<source>TAS Configuration</source>
- <translation type="unfinished"/>
+ <translation>Configurar TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_tas.cpp" line="51"/>
<source>Select TAS Load Directory...</source>
- <translation type="unfinished"/>
+ <translation>Selecionar diretório de carregamento TAS</translation>
</message>
</context>
<context>
@@ -3391,7 +3336,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<translation>Novo nome:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[premir tecla]</translation>
</message>
@@ -3446,37 +3391,37 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="21"/>
<source>Small (32x32)</source>
- <translation type="unfinished"/>
+ <translation>Pequeno (32x32)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="22"/>
<source>Standard (64x64)</source>
- <translation type="unfinished"/>
+ <translation>Padrão (64x64)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="23"/>
<source>Large (128x128)</source>
- <translation type="unfinished"/>
+ <translation>Grande (128x128)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="24"/>
<source>Full Size (256x256)</source>
- <translation type="unfinished"/>
+ <translation>Tamanho completo (256x256)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="29"/>
<source>Small (24x24)</source>
- <translation type="unfinished"/>
+ <translation>Pequeno (24x24)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="30"/>
<source>Standard (48x48)</source>
- <translation type="unfinished"/>
+ <translation>Padrão (48x48)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="31"/>
<source>Large (72x72)</source>
- <translation type="unfinished"/>
+ <translation>Grande (72x72)</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="36"/>
@@ -3486,7 +3431,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="37"/>
<source>Filetype</source>
- <translation type="unfinished"/>
+ <translation>Tipo de arquivo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="38"/>
@@ -3496,7 +3441,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message>
<location filename="../../src/yuzu/configuration/configure_ui.cpp" line="39"/>
<source>Title Name</source>
- <translation type="unfinished"/>
+ <translation>Nome do título</translation>
</message>
</context>
<context>
@@ -3544,12 +3489,12 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="91"/>
<source>Game Icon Size:</source>
- <translation type="unfinished"/>
+ <translation>Tamanho do ícone do jogo:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="105"/>
<source>Folder Icon Size:</source>
- <translation type="unfinished"/>
+ <translation>Tamanho do ícone da pasta:</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_ui.ui" line="119"/>
@@ -3606,68 +3551,73 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation>Pressione qualquer botão para vibrar o controle.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibração</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Jogador 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Jogador 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Jogador 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Jogador 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Jogador 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Jogador 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Jogador 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Jogador 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Ativar vibração precisa</translation>
</message>
@@ -3857,7 +3807,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<message>
<location filename="../../src/yuzu/main.cpp" line="759"/>
<source>The current selected resolution scaling multiplier.</source>
- <translation type="unfinished"/>
+ <translation>O atualmente multiplicador de escala de resolução selecionado.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.cpp" line="762"/>
@@ -3875,818 +3825,842 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta
<translation>Tempo gasto para emular um frame da Switch, sem contar o a limitação de quadros ou o v-sync. Para emulação de velocidade máxima, esta deve ser no máximo 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Configação inválida detectada</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>O comando portátil não pode ser usado no modo encaixado na base. O Pro controller será selecionado.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Limpar arquivos recentes</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Continuar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Pausa</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
- <translation type="unfinished"/>
+ <translation>yuzu está rodando um jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Aviso de Formato de Jogo Desactualizado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Você está usando o formato de directório ROM desconstruído para este jogo, que é um formato desactualizado que foi substituído por outros, como NCA, NAX, XCI ou NSP. Os directórios de ROM não construídos não possuem ícones, metadados e suporte de actualização.&lt;br&gt;&lt;br&gt;Para uma explicação dos vários formatos de Switch que o yuzu suporta,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Verifique a nossa Wiki&lt;/a&gt;. Esta mensagem não será mostrada novamente.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Erro ao carregar o ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>O formato do ROM não é suportado.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Ocorreu um erro ao inicializar o núcleo do vídeo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
- <translation type="unfinished"/>
+ <translation>yuzu encontrou um erro enquanto rodando o núcleo de vídeo. Normalmente isto é causado por drivers de GPU desatualizados, incluindo integrados. Por favor veja o registro para mais detalhes. Para mais informações em acesso ao registro por favor veja a seguinte página: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Como fazer envio de arquivo de registro&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Erro ao carregar a ROM! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Por favor, siga &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;a guia de início rápido do yuzu&lt;/a&gt; para fazer o redespejo dos seus arquivos.&lt;br&gt;Você pode consultar a wiki do yuzu&lt;/a&gt; ou o Discord do yuzu&lt;/a&gt; para obter ajuda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Ocorreu um erro desconhecido. Por favor, veja o log para mais detalhes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
- <translation type="unfinished"/>
+ <translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
- <translation type="unfinished"/>
+ <translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
- <translation type="unfinished"/>
+ <translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Save Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod Data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Erro ao abrir a pasta %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>A Pasta não existe!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Erro ao abrir os Shader Cache transferíveis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
- <translation type="unfinished"/>
+ <translation>Falha ao criar o diretório de cache de shaders para este título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Conteúdos</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Actualização</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Remover Entrada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Remover Jogo Instalado %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Removido com Sucesso</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Removida a instalação do jogo base com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Erro ao Remover %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>O jogo base não está instalado no NAND e não pode ser removido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Removida a actualização instalada com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Não há actualização instalada neste título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Não há DLC instalado neste título.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Removido DLC instalado %1 com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
- <translation type="unfinished"/>
+ <translation>Apagar o cache de shaders transferível do OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
- <translation type="unfinished"/>
+ <translation>Apagar o cache de shaders transferível do Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
- <translation type="unfinished"/>
+ <translation>Apagar todos os caches de shaders transferíveis?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Remover Configuração Personalizada do Jogo?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Remover Ficheiro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Error ao Remover Cache de Shader Transferível</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>O Shader Cache para este titulo não existe.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Removido a Cache de Shader Transferível com Sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Falha ao remover a cache de shader transferível.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
- <translation type="unfinished"/>
+ <translation>Erro ao remover os caches de shaders transferíveis</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
- <translation type="unfinished"/>
+ <translation>Os caches de shaders transferíveis foram removidos com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
- <translation type="unfinished"/>
+ <translation>Falha ao remover o diretório do cache de shaders transferível.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Erro ao Remover Configuração Personalizada</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Não existe uma configuração personalizada para este titúlo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Removida a configuração personalizada do jogo com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Falha ao remover a configuração personalizada do jogo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>A Extração de RomFS falhou!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Houve um erro ao copiar os arquivos RomFS ou o usuário cancelou a operação.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Cheio</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Esqueleto</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Selecione o modo de despejo do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Por favor, selecione a forma como você gostaria que o RomFS fosse despejado&lt;br&gt;Full irá copiar todos os arquivos para o novo diretório enquanto&lt;br&gt;skeleton criará apenas a estrutura de diretórios.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
- <translation type="unfinished"/>
+ <translation>Não há espaço suficiente em %1 para extrair o RomFS. Por favor abra espaço ou selecione um diretório diferente em Emulação &gt; Configurar &gt; Sistema &gt; Sistema de arquivos &gt; Extrair raiz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extraindo o RomFS ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Extração de RomFS Bem-Sucedida!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>A operação foi completa com sucesso.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Erro ao abrir %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Selecione o Diretório</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Propriedades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>As propriedades do jogo não puderam ser carregadas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Executáveis Switch (%1);;Todos os Ficheiros (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Carregar Ficheiro</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Abrir o directório ROM extraído</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Diretório inválido selecionado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>O diretório que você selecionou não contém um arquivo &apos;Main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Ficheiro Switch Instalável (*.nca *.nsp *.xci);;Arquivo de Conteúdo Nintendo (*.nca);;Pacote de Envio Nintendo (*.nsp);;Imagem de Cartucho NX (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Instalar Ficheiros</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Instalando arquivo &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Instalar Resultados</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Para evitar possíveis conflitos, desencorajamos que os utilizadores instalem os jogos base na NAND.
Por favor, use esse recurso apenas para instalar atualizações e DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Aplicação do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Arquivo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Atualização do aplicativo do sistema</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Pacote de Firmware (Tipo A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Pacote de Firmware (Tipo B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Actualização do Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>DLC do Jogo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Título Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Selecione o tipo de instalação do NCA ...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Por favor, selecione o tipo de título que você gostaria de instalar este NCA como:
(Na maioria dos casos, o padrão &apos;Jogo&apos; é suficiente).</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Falha na instalação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>O tipo de título que você selecionou para o NCA é inválido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Arquivo não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Arquivo &quot;%1&quot; não encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Conta Yuzu Ausente</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Para enviar um caso de teste de compatibilidade de jogos, você deve vincular sua conta yuzu.&lt;br&gt;&lt;br/&gt;Para vincular sua conta yuzu, vá para Emulação &amp;gt; Configuração &amp;gt; Rede.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Erro ao abrir URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Não foi possível abrir o URL &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
- <translation type="unfinished"/>
+ <translation>Gravando TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
+ <translation>Sobrescrever arquivo do jogador 1?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Configação inválida detectada</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>O comando portátil não pode ser usado no modo encaixado na base. O Pro controller será selecionado.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation>Erro</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation>O jogo atual não está procurando amiibos</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Arquivo Amiibo (%1);; Todos os Arquivos (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Carregar Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Erro ao abrir o arquivo de dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Não é possível abrir o arquivo Amiibo &quot;%1&quot; para leitura.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Erro ao ler o arquivo de dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Não é possível ler completamente os dados do Amiibo. Espera-se que leia %1 bytes, mas só conseguiu ler %2 bytes.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Erro ao carregar dados do Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Não foi possível carregar os dados do Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Captura de Tela</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Imagem PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
- <translation type="unfinished"/>
+ <translation>Situação TAS: Rodando %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
- <translation type="unfinished"/>
+ <translation>Situação TAS: Gravando %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
- <translation type="unfinished"/>
+ <translation>Situação TAS: Repouso %1%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
- <translation type="unfinished"/>
+ <translation>Situação TAS: Inválido</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
- <translation type="unfinished"/>
+ <translation>&amp;Parar de rodar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Começar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
- <translation type="unfinished"/>
+ <translation>Parar G&amp;ravação</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
- <translation type="unfinished"/>
+ <translation>G&amp;ravação</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
- <translation type="unfinished"/>
+ <translation>Escala: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Velocidade: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Velocidade: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
- <translation type="unfinished"/>
+ <translation>Jogo: %1 FPS (Desbloqueado)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Jogo: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Quadro: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
- <translation type="unfinished"/>
+ <translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
- <translation type="unfinished"/>
+ <translation>GPU ALTA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
- <translation type="unfinished"/>
+ <translation>GPU EXTREMA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
- <translation type="unfinished"/>
+ <translation>ERRO DE GPU</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
- <translation type="unfinished"/>
+ <translation>VIZINHO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
- <translation type="unfinished"/>
+ <translation>BILINEAR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
- <translation type="unfinished"/>
+ <translation>BICÚBICO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
- <translation type="unfinished"/>
+ <translation>GAUSSIANO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
- <translation type="unfinished"/>
+ <translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
- <translation type="unfinished"/>
+ <translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
- <translation type="unfinished"/>
+ <translation>Sem AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
- <translation type="unfinished"/>
+ <translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>O jogo que você está tentando carregar requer arquivos adicionais do seu Switch para serem despejados antes de jogar.&lt;br/&gt;&lt;br/&gt;Para obter mais informações sobre como despejar esses arquivos, consulte a seguinte página da wiki:&lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Despejando arquivos do sistema e as fontes compartilhadas de uma consola Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Você gostaria de regressar para a lista de jogos? Continuar a emulação pode resultar em falhas, dados de salvamento corrompidos ou outros erros.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>O yuzu não conseguiu localizar um arquivo de sistema do Switch. % 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>O yuzu não conseguiu localizar um arquivo de sistema do Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Arquivo do Sistema Não Encontrado</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Arquivo de Sistema em falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu não conseguiu localizar as fontes compartilhadas do Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Fontes compartilhadas não encontradas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Fontes compartilhadas em falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Erro fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu encontrou um erro fatal, por favor veja o registro para mais detalhes. Para mais informações sobre como acessar o registro, por favor, veja a seguinte página:&lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Como carregar o arquivo de registro&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Você gostaria de regressar para a lista de jogos? Continuar a emulação pode resultar em falhas, dados de salvamento corrompidos ou outros erros.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Ocorreu um Erro fatal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Confirme a rederivação da chave</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4703,37 +4677,37 @@ e opcionalmente faça backups.
Isso irá excluir os seus arquivos de chave gerados automaticamente e executará novamente o módulo de derivação de chave.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Fusíveis em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Componentes de Derivação em Falta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
- <translation type="unfinished"/>
+ <translation>Chaves de encriptação faltando. &lt;br&gt;Por favor, siga &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;o guia de início rápido&lt;/a&gt; para extrair suas chaves, firmware e jogos. &lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4742,39 +4716,39 @@ Isto pode demorar até um minuto, dependendo
do desempenho do seu sistema.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Derivando Chaves</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Selecione o destino de despejo do RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Por favor, selecione qual o RomFS que você gostaria de despejar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Tem a certeza que quer fechar o yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Tem a certeza de que quer parar a emulação? Qualquer progresso não salvo será perdido.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -4819,7 +4793,7 @@ Deseja ignorar isso e sair mesmo assim?</translation>
<message>
<location filename="../../src/yuzu/bootmanager.cpp" line="1017"/>
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.&lt;br&gt;&lt;br&gt;GL Renderer:&lt;br&gt;%1&lt;br&gt;&lt;br&gt;Unsupported extensions:&lt;br&gt;%2</source>
- <translation type="unfinished"/>
+ <translation>Sua GPU pode não suportar uma ou mais extensões necessárias do OpenGL. Verifique se você possui a última versão dos drivers gráficos.&lt;br&gt;&lt;br&gt;Renderizador GL:&lt;br&gt;%1&lt;br&gt;&lt;br&gt;Extensões não suportadas:&lt;br&gt;%2</translation>
</message>
</context>
<context>
@@ -4877,7 +4851,7 @@ Deseja ignorar isso e sair mesmo assim?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="544"/>
<source>Open Transferable Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Abrir cache de pipeline transferível</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="546"/>
@@ -4902,17 +4876,17 @@ Deseja ignorar isso e sair mesmo assim?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="550"/>
<source>Remove OpenGL Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Remover cache de pipeline do OpenGL</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="551"/>
<source>Remove Vulkan Pipeline Cache</source>
- <translation type="unfinished"/>
+ <translation>Remover cache de pipeline do Vulkan</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="553"/>
<source>Remove All Pipeline Caches</source>
- <translation type="unfinished"/>
+ <translation>Remover todos os caches de pipeline</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="554"/>
@@ -4928,7 +4902,7 @@ Deseja ignorar isso e sair mesmo assim?</translation>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="557"/>
<source>Dump RomFS to SDMC</source>
- <translation type="unfinished"/>
+ <translation>Extrair RomFS para SDMC</translation>
</message>
<message>
<location filename="../../src/yuzu/game_list.cpp" line="558"/>
@@ -5114,7 +5088,8 @@ Inicial</translation>
<location filename="../../src/yuzu/util/limitable_input_dialog.cpp" line="62"/>
<source>The text can't contain any of the following characters:
%1</source>
- <translation type="unfinished"/>
+ <translation>O texto não pode conter nenhum dos seguintes caracteres:
+%1</translation>
</message>
</context>
<context>
@@ -5185,12 +5160,12 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="82"/>
<source>&amp;Reset Window Size</source>
- <translation type="unfinished"/>
+ <translation>&amp;Restaurar tamanho da janela</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="87"/>
<source>&amp;Debugging</source>
- <translation type="unfinished"/>
+ <translation>&amp;Depurar</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="92"/>
@@ -5205,12 +5180,12 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="100"/>
<source>Reset Window Size to &amp;900p</source>
- <translation type="unfinished"/>
+ <translation>Restaurar tamanho da janela para &amp;900p</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="103"/>
<source>Reset Window Size to 900p</source>
- <translation type="unfinished"/>
+ <translation>Restaurar tamanho da janela para 900p</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="108"/>
@@ -5230,7 +5205,7 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="129"/>
<source>&amp;TAS</source>
- <translation type="unfinished"/>
+ <translation>&amp;TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="144"/>
@@ -5290,7 +5265,7 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="226"/>
<source>Display D&amp;ock Widget Headers</source>
- <translation type="unfinished"/>
+ <translation>Exibir barra de títul&amp;os de widgets afixados</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="234"/>
@@ -5319,13 +5294,13 @@ Inicial</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Carregar &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation>Carregar/Remover &amp;Amiibo...</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
<source>&amp;Report Compatibility</source>
- <translation type="unfinished"/>
+ <translation>&amp;Reportar compatibilidade</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="285"/>
@@ -5335,12 +5310,12 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="290"/>
<source>Open &amp;Quickstart Guide</source>
- <translation type="unfinished"/>
+ <translation>Abrir &amp;guia de início rápido</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="295"/>
<source>&amp;FAQ</source>
- <translation type="unfinished"/>
+ <translation>&amp;Perguntas frequentes</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="300"/>
@@ -5355,7 +5330,7 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="313"/>
<source>&amp;Configure TAS...</source>
- <translation type="unfinished"/>
+ <translation>&amp;Configurar TAS</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="321"/>
@@ -5370,12 +5345,12 @@ Inicial</translation>
<message>
<location filename="../../src/yuzu/main.ui" line="337"/>
<source>&amp;Reset</source>
- <translation type="unfinished"/>
+ <translation>&amp;Restaurar</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="345"/>
<source>R&amp;ecord</source>
- <translation type="unfinished"/>
+ <translation>G&amp;ravar</translation>
</message>
</context>
<context>
@@ -5412,20 +5387,19 @@ Inicial</translation>
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:18pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
+ <translation>INICIAR/PAUSAR</translation>
</message>
</context>
<context>
@@ -5453,7 +5427,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/game_list_p.h" line="326"/>
<source>Favorites</source>
- <translation type="unfinished"/>
+ <translation>Favoritos</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="23"/>
@@ -5475,8 +5449,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[não configurado]</translation>
</message>
@@ -5487,10 +5461,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Eixo %1%2</translation>
</message>
@@ -5501,9 +5475,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[Desconhecido]</translation>
</message>
@@ -5570,135 +5544,145 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="82"/>
<source>L1</source>
- <translation type="unfinished"/>
+ <translation>L1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="84"/>
<source>L2</source>
- <translation type="unfinished"/>
+ <translation>L2</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="86"/>
<source>L3</source>
- <translation type="unfinished"/>
+ <translation>L3</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="88"/>
<source>R1</source>
- <translation type="unfinished"/>
+ <translation>R1</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="90"/>
<source>R2</source>
- <translation type="unfinished"/>
+ <translation>R2</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="92"/>
<source>R3</source>
- <translation type="unfinished"/>
+ <translation>R3</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="94"/>
<source>Circle</source>
- <translation type="unfinished"/>
+ <translation>Círculo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="96"/>
<source>Cross</source>
- <translation type="unfinished"/>
+ <translation>Cruz</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="98"/>
<source>Square</source>
- <translation type="unfinished"/>
+ <translation>Quadrado</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="100"/>
<source>Triangle</source>
- <translation type="unfinished"/>
+ <translation>Triângulo</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="102"/>
<source>Share</source>
- <translation type="unfinished"/>
+ <translation>Compartilhar</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="104"/>
<source>Options</source>
- <translation type="unfinished"/>
+ <translation>Opções</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Toque</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
- <translation type="unfinished"/>
+ <translation>Volante</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
- <translation type="unfinished"/>
+ <translation>Para trás</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
- <translation type="unfinished"/>
+ <translation>Para a frente</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
- <translation type="unfinished"/>
+ <translation>Tarefa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
- <translation type="unfinished"/>
+ <translation>Extra</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
- <translation type="unfinished"/>
+ <translation>[indefinido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
- <translation type="unfinished"/>
+ <translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
- <translation type="unfinished"/>
+ <translation>[inválido]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Direcional %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Eixo %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
- <translation type="unfinished"/>
+ <translation>%1%2Eixo %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Movimentação %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
- <translation type="unfinished"/>
+ <translation>%1%2Botão %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[sem uso]</translation>
</message>
@@ -5708,12 +5692,12 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="14"/>
<source>Controller Applet</source>
- <translation type="unfinished"/>
+ <translation>Applet de controle</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="129"/>
<source>Supported Controller Types:</source>
- <translation type="unfinished"/>
+ <translation>Tipos de controle suportados:</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="282"/>
@@ -5723,7 +5707,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="300"/>
<source>1 - 8</source>
- <translation type="unfinished"/>
+ <translation>1 - 8</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="418"/>
@@ -5833,7 +5817,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="1958"/>
<source>P6</source>
- <translation type="unfinished"/>
+ <translation>J6</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="2272"/>
@@ -5874,7 +5858,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="2432"/>
<source>Create</source>
- <translation type="unfinished"/>
+ <translation>Criar</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.ui" line="2467"/>
@@ -5934,27 +5918,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="445"/>
<source>Poke Ball Plus</source>
- <translation type="unfinished"/>
+ <translation>Poké Ball Plus</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="449"/>
<source>NES Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle do NES</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="453"/>
<source>SNES Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle do SNES</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="457"/>
<source>N64 Controller</source>
- <translation type="unfinished"/>
+ <translation>Controle do Nintendo 64</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_controller.cpp" line="461"/>
<source>Sega Genesis</source>
- <translation type="unfinished"/>
+ <translation>Mega Drive</translation>
</message>
</context>
<context>
@@ -5964,19 +5948,21 @@ p, li { white-space: pre-wrap; }
<location filename="../../src/yuzu/applets/qt_error.cpp" line="34"/>
<location filename="../../src/yuzu/applets/qt_error.cpp" line="49"/>
<source>Error Code: %1-%2 (0x%3)</source>
- <translation type="unfinished"/>
+ <translation>Código de erro: %1-%2 (0x%3)</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_error.cpp" line="25"/>
<source>An error has occurred.
Please try again or contact the developer of the software.</source>
- <translation type="unfinished"/>
+ <translation>Ocorreu um erro.
+Tente novamente ou entre em contato com o desenvolvedor do software.</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_error.cpp" line="38"/>
<source>An error occurred on %1 at %2.
Please try again or contact the developer of the software.</source>
- <translation type="unfinished"/>
+ <translation>Ocorreu um erro em %1 até %2.
+Tente novamente ou entre em contato com o desenvolvedor do software.</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_error.cpp" line="53"/>
@@ -5985,7 +5971,11 @@ Please try again or contact the developer of the software.</source>
%1
%2</source>
- <translation type="unfinished"/>
+ <translation>Ocorreu um erro.
+
+%1
+
+%2</translation>
</message>
</context>
<context>
@@ -6024,7 +6014,7 @@ Please try again or contact the developer of the software.</source>
<message>
<location filename="../../src/yuzu/applets/qt_software_keyboard.ui" line="199"/>
<source>Enter Text</source>
- <translation type="unfinished"/>
+ <translation>Insira o texto</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_software_keyboard.ui" line="479"/>
@@ -6033,7 +6023,11 @@ Please try again or contact the developer of the software.</source>
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:26pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../src/yuzu/applets/qt_software_keyboard.cpp" line="399"/>
@@ -6099,7 +6093,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="188"/>
<source>[%1] %2 %3</source>
- <translation type="unfinished"/>
+ <translation>[%1] %2 %3</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="215"/>
@@ -6147,27 +6141,27 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="276"/>
<source>waiting for suspend resume</source>
- <translation type="unfinished"/>
+ <translation>esperando pra suspender o resumo</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="279"/>
<source>waiting</source>
- <translation type="unfinished"/>
+ <translation>aguardando</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="284"/>
<source>initialized</source>
- <translation type="unfinished"/>
+ <translation>inicializado</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="287"/>
<source>terminated</source>
- <translation type="unfinished"/>
+ <translation>terminado</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="290"/>
<source>unknown</source>
- <translation type="unfinished"/>
+ <translation>desconhecido</translation>
</message>
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="295"/>
@@ -6233,7 +6227,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/debugger/wait_tree.cpp" line="468"/>
<source>&amp;Wait Tree</source>
- <translation type="unfinished"/>
+ <translation>&amp;Árvore de espera</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts
index c9bd07701..49fc85660 100644
--- a/dist/languages/ru_RU.ts
+++ b/dist/languages/ru_RU.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Нажмите в верхнем левом углу &lt;br&gt;вашего тачпада.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Теперь нажмите в нижнем правом углу &lt;br&gt; вашего тачпада.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Настройка завершена!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>ОК</translation>
</message>
@@ -900,49 +900,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Сбросить кэш метаданных</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Выберите папку для эмулируемого NAND...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Выберите папку для эмулируемого SD...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Выберите папку с картриджами...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Выберите папку для дампов...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Выберите папку с модами...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Кэш метаданных уже пустой.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Операция выполнена успешно.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Кэш метаданных не может быть удален. Возможно, он используется или отсутствует.</translation>
</message>
@@ -1003,36 +1003,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Подтверждать выход во время эмуляции</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Спрашивать пользователя при запуске игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Приостанавливать эмуляцию в фоновом режиме</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Спрятать мышь при неактивности</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Сбросить все настройки</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Это сбросит все настройки и удалит все конфигурации под отдельные игры. При этом не будут удалены пути для игр, профили или профили ввода. Продолжить?</translation>
</message>
@@ -1420,86 +1430,6 @@ p, li { white-space: pre-wrap; }
<translation>[ожидание]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Минус</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Плюс</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1909,7 +1839,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Левый Стик</translation>
</message>
@@ -2003,14 +1933,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2029,7 +1959,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Плюс</translation>
</message>
@@ -2042,15 +1972,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2107,225 +2037,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Правый Стик</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[не задано]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Переключить кнопку</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Инвертировать кнопку</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Инвертировать оси</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Установить порог</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Выберите значение между 0% и 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Задать Аналоговый Стик</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>После нажатия на ОК, двигайте ваш джойстик горизонтально, а затем вертикально.
Чтобы инвертировать оси, сначала двигайте ваш джойстик вертикально, а затем горизонтально.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Мёртвая зона: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Диапазон Модификатора: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Контроллер Pro</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Двойные Joycon&apos;ы</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Левый Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Правый Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Портативный</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Контроллер GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>Контроллер NES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>Контроллер SNES</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>Контроллер N64</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Старт / Пауза</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Управляющий Стик</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Стик</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Встряхните!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[ожидание]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Новый Профиль</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Введите имя профиля:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Создать Профиль Управления</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Заданное имя профиля недействительно!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Не удалось создать профиль управления &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Удалить Профиль Управления</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Не удалось удалить профиль управления &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Загрузить профиль управления</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Не удалось загрузить профиль управления &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Сохранить Профиль Управления</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Не удалось сохранить профиль управления &quot;%1&quot;</translation>
</message>
@@ -2373,7 +2308,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Настроить</translation>
</message>
@@ -2409,7 +2344,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Тест</translation>
</message>
@@ -2424,82 +2359,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation>Удалить Сервер</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Узнать Больше&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Номер порта содержит недопустимые символы</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Порт должен быть в районе от 0 до 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP-адрес недействителен</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Этот UDP сервер уже существует</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Невозможно добавить более 8 серверов</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Тестирование</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Настройка</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Тест Успешен</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Успешно получена информация с сервера</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Тест Провален</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Не удалось получить действительные данные с сервера.&lt;br&gt;Убедитесь, что сервер правильно настроен, а также проверьте адрес и порт.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>Тест UDP или калибрация в процессе.&lt;br&gt;Пожалуйста, подождите завершения.</translation>
</message>
@@ -3411,7 +3346,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Новое название:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[нажмите кнопку]</translation>
</message>
@@ -3626,68 +3561,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Вибрация</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Игрок 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Игрок 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Игрок 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Игрок 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Игрок 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Игрок 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Игрок 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Игрок 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Включить Точную Вибрацию</translation>
</message>
@@ -3895,440 +3835,430 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Время, которое нужно для эмуляции 1 кадра Switch, не принимая во внимание ограничение FPS или v-sync. Для полноскоростной эмуляции значение должно быть не больше 16,67 мс.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Обнаружена недопустимая конфигурация</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Портативный контроллер не может быть использован в режиме док-станции. Будет выбран контроллер Pro.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>ДОК</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Очистить Недавние Файлы</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Продолжить</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Пауза</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Предупреждение Устаревший Формат Игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Для этой игры вы используете разархивированный формат ROM&apos;а, который является устаревшим и был заменен другими, такими как NCA, NAX, XCI или NSP. В разархивированных каталогах ROM&apos;а отсутствуют иконки, метаданные и поддержка обновлений. &lt;br&gt;&lt;br&gt;Для получения информации о различных форматах Switch, поддерживаемых yuzu, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;просмотрите нашу вики&lt;/a&gt;. Это сообщение больше не будет отображаться.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Ошибка при загрузке ROM&apos;а!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Формат ROM&apos;а не поддерживается.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Произошла ошибка при инициализации видеоядра.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>Ошибка при загрузке ROM&apos;а! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Пожалуйста, следуйте &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;краткому руководству пользователя yuzu&lt;/a&gt; чтобы пере-дампить ваши файлы&lt;br&gt;Вы можете обратиться к вики yuzu&lt;/a&gt; или Discord yuzu&lt;/a&gt; для помощи.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Произошла неизвестная ошибка. Пожалуйста, проверьте лог для подробностей.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-х битный)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-х битный)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Данные Сохранений</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Данные Модов</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Ошибка при Открытии Папки %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Папка не существует!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Ошибка при открытии переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Не удалось создать папку кэша шейдеров для этой игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Содержание</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Обновление</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>Загружаемый Контент</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Удалить Запись</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Удалить Установленную Игру %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Успешно Удалено</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Установленная базовая игра успешно удалена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Ошибка при Удалении %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Базовая игра не установлена в NAND и не может быть удалена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Установленное обновление успешно удалено.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Для этой игры нету обновлений.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Для этой игры нет установленного загружаемого контента.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Успешно удалено %1 загружаемого контента.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>Удалить переносной кэш шейдеров OpenGL?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Удалить переносной кэш шейдеров Vulkan?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Удалить весь переносной кэш шейдеров?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Удалить Пользовательскую Настройку Игры?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Удалить Файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Ошибка при удалении переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Кэш шейдеров для этой игры не существует.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Переносной кэш шейдеров успешно удалён.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Не удалось удалить переносной кэш шейдеров.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Ошибка при удалении переносного кэша шейдеров</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Переносной кэш шейдеров успешно удален.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Ошибка при удалении папки переносного кэша шейдеров.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Ошибка при Удалении Пользовательской Настройки</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Пользовательская настройка для этой игры не существует.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Пользовательская настройка игры успешно удалена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Не удалось удалить пользовательскую настройку игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Не Удалось Извлечь RomFS!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Произошла ошибка при копировании файлов RomFS или пользователь отменил операцию.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Полный</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Структура</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Выберите Режим Дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Пожалуйста, выберите, как вы хотите выполнить дамп RomFS. &lt;br&gt;Полный скопирует все файлы в новую папку, в то время как &lt;br&gt;структура создаст только структуру папок.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>В %1 недостаточно свободного места для извлечения RomFS. Пожалуйста, освободите место или выберите другую папку для дампа в Эмуляция &gt; Настройка &gt; Система &gt; Файловая система &gt; Корень Дампа</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Извлечение RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Извлечение RomFS Прошло Успешно!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Операция выполнена.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Ошибка Открытия %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Выбрать папку</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Свойства</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Не удалось загрузить свойства игры.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Исполняемый файл Switch (%1);;Все файлы (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Загрузить файл</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Открыть папку извлечённого ROM&apos;а</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Выбрана недопустимая папка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Папка, которую вы выбрали, не содержит «основного» файла.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Устанавливаемый Файл Switch (*.nca, *.nsp, *.xci);;Архив Контента Nintendo (*.nca);;Пакет Подачи Nintendo (*.nsp);;Образ Картриджа NX (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Установить Файлы</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>Остался %n файл</numerusform><numerusform>Осталось %n файл(ов)</numerusform><numerusform>Осталось %n файл(ов)</numerusform><numerusform>Осталось %n файл(ов)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Установка файла &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Установить Результаты</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Чтобы избежать возможных конфликтов, мы не рекомендуем пользователям устанавливать базовые игры на NAND.
Пожалуйста, используйте эту функцию только для установки обновлений и DLC.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n файл был недавно установлен
@@ -4338,7 +4268,7 @@ Please, only use this feature to install updates and DLC.</source>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n файл был перезаписан
@@ -4348,7 +4278,7 @@ Please, only use this feature to install updates and DLC.</source>
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n файл(ов) не удалось установить
@@ -4358,367 +4288,401 @@ Please, only use this feature to install updates and DLC.</source>
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Системное Приложение</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Системный Архив</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Обновление Системного Приложения</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Пакет Прошивки (Тип А)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Пакет Прошивки (Тип Б)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Игра</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Обновление Игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Загружаемый Контент Игры</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Дельта-Титул</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Выберите Тип Установки NCA...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Пожалуйста, выберите тип приложения, который вы хотите установить для этого NCA:
(В большинстве случаев, подходит стандартный выбор «Игра».)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Ошибка Установки</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Тип приложения, который вы выбрали для NCA, недействителен.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Файл не найден</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Файл &quot;%1&quot; не найден</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>ОК</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Отсутствует Аккаунт yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Чтобы отправить отчет о совместимости игры, необходимо привязать свою учетную запись yuzu.&lt;br&gt;&lt;br/&gt;Чтобы привязать свою учетную запись yuzu, перейдите в раздел Эмуляция &amp;gt; Настройка &amp;gt; Веб.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Ошибка при открытии URL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Не удалось открыть URL: &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>Запись TAS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Перезаписать файл игрока 1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Обнаружена недопустимая конфигурация</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Портативный контроллер не может быть использован в режиме док-станции. Будет выбран контроллер Pro.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Файл Amiibo (%1);; Все Файлы (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Загрузить Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Ошибка открытия файла данных Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Невозможно открыть файл Amiibo &quot;%1&quot; для чтения.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Ошибка чтения файла данных Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Невозможно полностью прочитать данные Amiibo. Ожидалось прочитать %1 байт, но удалось прочитать только %2 байт.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Ошибка загрузки данных Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Невозможно загрузить данные Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Сделать Скриншот</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Изображение PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>Состояние TAS: Выполняется %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>Состояние TAS: Записывается %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>Состояние TAS: Простой %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>Состояние TAS: Неверный</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Остановка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Начать</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>Закончить з&amp;апись</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>З&amp;апись</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Постройка: %n шейдер(ов)</numerusform><numerusform>Постройка: %n шейдер(ов)</numerusform><numerusform>Постройка: %n шейдер(ов)</numerusform><numerusform>Постройка: %n шейдер(ов)</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Масштаб: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Скорость: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Скорость: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Игра: %1 FPS (Неограниченно)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Игра: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Кадр: %1 мс</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>ГП НОРМАЛЬНО</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>ГП ВЫСОКО</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>ГП ЭКСТРИМ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>ГП ОШИБКА</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>БЛИЖАЙШИЙ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>БИЛИНЕЙНЫЙ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>БИКУБИЧЕСКИЙ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>ГАУСС</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>БЕЗ СГЛАЖИВАНИЯ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Игра, которую вы пытаетесь загрузить, требует, чтобы дополнительные файлы были сдамплены с вашего Switch перед началом игры. &lt;br/&gt;&lt;br/&gt;Для получения дополнительной информации о дампе этих файлов см. следующую вики: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Дамп Системных Архивов и Общих Шрифтов с консоли&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Хотите вернуться к списку игр? Продолжение эмуляции может привести к сбоям, повреждению сохраненных данных или другим ошибкам.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu не удалось найти системный архив Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu не удалось найти системный архив Switch: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Системный Архив Не Найден</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Отсутствует Системный Архив</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu не удалось найти общие шрифты Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Общие Шрифты Не Найдены</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Общие Шрифты Отсутствуют</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Фатальная Ошибка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu столкнулся с фатальной ошибкой, смотрите подробности в журнале. Информацию о доступе к журналу можно найти на этой странице: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Как Отправить Файл Журнала&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Желаете вернуться к списку игр? Продолжение эмуляции может привести к сбоям, повреждению сохраненных данных или другим ошибкам.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Произошла Фатальная Ошибка</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Подтвердите Перерасчет Ключа</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4735,37 +4699,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
Это удалит ваши автоматически сгенерированные файлы ключей и повторно запустит модуль расчета ключей.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Отсутствуют предохранители</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Отсутствует BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Отсутствует BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- Отсутствует PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Компоненты Расчета Отсутствуют</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Ключи шифрования отсутствуют. &lt;br&gt;Пожалуйста, следуйте &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;краткому руководству пользователя yuzu&lt;/a&gt;, чтобы получить ключи, прошивку и игры.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4774,39 +4738,39 @@ on your system&apos;s performance.</source>
от производительности вашей системы.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Получение Ключей</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Выберите Цель для Дампа RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Пожалуйста, выберите, какой RomFS вы хотите сдампить.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Вы уверены, что хотите закрыть yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Вы уверены, что хотите остановить эмуляцию? Любой несохраненный прогресс будет потерян.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5352,8 +5316,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>Загрузить &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5455,15 +5419,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>СТАРТ/ПАУЗА</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Зарядка</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5512,8 +5471,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[не задано]</translation>
</message>
@@ -5524,10 +5483,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Ось %1%2</translation>
</message>
@@ -5538,9 +5497,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[неизвестно]</translation>
</message>
@@ -5666,76 +5625,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Домой</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Нажатие</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[не определено]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[недопустимо]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Шляпа %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Ось %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Ось %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Движение %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Кнопка %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[не используется]</translation>
</message>
diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts
index 5bf4f2726..be5bb5377 100644
--- a/dist/languages/sv.ts
+++ b/dist/languages/sv.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Tryck på det övre vänstra hörnet &lt;br&gt;på pekplattan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Tryck nu på det nedre högra hörnet &lt;br&gt; på pekplattan</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Konfiguration slutförd!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -886,49 +886,49 @@ avgjord kod.&lt;/div&gt;
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Återställ metadatasparning</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Välj emulerad NAND-katalog...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Välj emulerad SD katalog...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Välj Spelkortssökväg...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Välj dumpsökväg...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Välj modladdningssökväg</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Metadata cachen är redan tom.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Operationen slutfördes utan problem</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Metadata cachen kunde inte tas bort. Den kan vara under användning eller icke-existerande.</translation>
</message>
@@ -989,36 +989,46 @@ avgjord kod.&lt;/div&gt;
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Godkänn avslut medans emulering pågår</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Fråga efter användare vid spelstart</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Pausa emulationen när fönstret är i bakgrunden</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Göm mus när inaktiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation type="unfinished"/>
</message>
@@ -1406,86 +1416,6 @@ avgjord kod.&lt;/div&gt;
<translation>[väntar]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Minus</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Pluss</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1895,7 +1825,7 @@ avgjord kod.&lt;/div&gt;
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Vänster Spak</translation>
</message>
@@ -1989,14 +1919,14 @@ avgjord kod.&lt;/div&gt;
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2015,7 +1945,7 @@ avgjord kod.&lt;/div&gt;
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Pluss</translation>
</message>
@@ -2028,15 +1958,15 @@ avgjord kod.&lt;/div&gt;
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2093,224 +2023,229 @@ avgjord kod.&lt;/div&gt;
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Höger Spak</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Rensa</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[ej angett]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Dödzon: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Modifieringsräckvidd: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Prokontroller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Dubbla Joycons</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Vänster Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Höger Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Handhållen</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[väntar]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Ny profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation type="unfinished"/>
</message>
@@ -2358,7 +2293,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Konfigurera</translation>
</message>
@@ -2394,7 +2329,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2409,82 +2344,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Lär dig mer&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Testar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Konfigurerar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test framgångsrikt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Tog emot data från servern framgångsrikt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test misslyckades</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Kunde inte ta emot giltig data från servern.&lt;br&gt;Var vänlig verifiera att servern är korrekt uppsatt och att adressen och porten är korrekta.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP Test eller kalibreringskonfiguration är igång.&lt;br&gt;Var vänlig vänta för dem att slutföras.</translation>
</message>
@@ -3396,7 +3331,7 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r
<translation>Nytt namn:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[tryck på tangent]</translation>
</message>
@@ -3611,68 +3546,73 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Vibration</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Spelare 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Spelare 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Spelare 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Spelare 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Spelare 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Spelare 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Spelare 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Spelare 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation type="unfinished"/>
</message>
@@ -3880,817 +3820,841 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r
<translation>Tid det tar att emulera en Switch bild, utan att räkna med framelimiting eller v-sync. För emulering på full hastighet så ska det vara som mest 16.67 ms. </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCKAD</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Paus</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Varning Föråldrat Spelformat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Du använder det dekonstruerade ROM-formatet för det här spelet. Det är ett föråldrat format som har överträffats av andra som NCA, NAX, XCI eller NSP. Dekonstruerade ROM-kataloger saknar ikoner, metadata och uppdatering.&lt;br&gt;&lt;br&gt;För en förklaring av de olika format som yuzu stöder, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;kolla in vår wiki&lt;/a&gt;. Det här meddelandet visas inte igen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Fel vid laddning av ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>ROM-formatet stöds inte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Ett fel inträffade vid initiering av videokärnan.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Ett okänt fel har uppstått. Se loggen för mer information.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Spardata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod-data</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Fel Öppnar %1 Mappen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Mappen finns inte!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Fel Under Öppning Av Överförbar Shadercache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>Innehåll</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Uppdatera</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Ta bort katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>Ta Bort Installerat Spel %1?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Framgångsrikt borttagen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Tog bort det installerade basspelet framgångsrikt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>Fel Under Borttagning Av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Basspelet är inte installerat i NAND och kan inte tas bort.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Tog bort den installerade uppdateringen framgångsrikt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Det finns ingen uppdatering installerad för denna titel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Det finns inga DLC installerade för denna titel.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>Tog framgångsrikt bort den %1 installerade DLCn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Ta Bort Anpassad Spelkonfiguration?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Radera fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Fel När Överförbar Shader Cache Raderades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>En shader cache för denna titel existerar inte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Raderade den överförbara shadercachen framgångsrikt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Misslyckades att ta bort den överförbara shadercache</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Fel När Anpassad Konfiguration Raderades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>En anpassad konfiguration för denna titel existerar inte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Tog bort den anpassade spelkonfigurationen framgångsrikt.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Misslyckades att ta bort den anpassade spelkonfigurationen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS Extraktion Misslyckades!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Det uppstod ett fel vid kopiering av RomFS filer eller användaren avbröt operationen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Full</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Skelett</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Välj RomFS Dump-Läge</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Välj hur du vill att RomFS ska dumpas. &lt;br&gt;Full kommer att kopiera alla filer i den nya katalogen medan &lt;br&gt;skelett bara skapar katalogstrukturen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Extraherar RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Avbryt</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Extraktion Lyckades!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Operationen var lyckad.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>Fel under öppning av %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Välj Katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Egenskaper</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Spelegenskaperna kunde inte laddas.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch Körbar (%1);;Alla Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Ladda Fil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Öppna Extraherad ROM-Katalog</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Ogiltig Katalog Vald</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Katalogen du har valt innehåller inte en &apos;main&apos;-fil.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Installerbar Switch-fil (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Installera filer</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Installerar Fil &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Installera resultat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Systemapplikation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Systemarkiv</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Systemapplikationsuppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Firmwarepaket (Typ A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Firmwarepaket (Typ B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Spel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Speluppdatering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Spel DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Titel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Välj NCA-Installationsläge...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Välj vilken typ av titel du vill installera som:
(I de flesta fallen, standard &apos;Spel&apos; är bra.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Misslyckades med Installationen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Den titeltyp du valt för NCA är ogiltig.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Filen hittades inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Filen &quot;%1&quot; hittades inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>yuzu Konto hittades inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>För att skicka ett spelkompatibilitetstest, du måste länka ditt yuzu-konto.&lt;br&gt;&lt;br/&gt;För att länka ditt yuzu-konto, gå till Emulering &amp;gt, Konfigurering &amp;gt, Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>Fel när URL öppnades</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>Oförmögen att öppna URL:en &quot;%1&quot;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo Fil (%1);; Alla Filer (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Ladda Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Fel öppnar Amiibo-datafilen</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Kunde inte öppna Amiibo filen &quot;%1&quot; för läsning.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Fel vid läsning av Amiibo-datafil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Kan inte läsa Amiibo-data helt. Förväntas läsa %1 byte, men kunde bara läsa %2 byte.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Fel vid laddning av Amiibodata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Kan inte ladda Amiibodata.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Skärmdump</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG Bild (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Start</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Hastighet: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Hastighet: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Spel: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Ruta: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Spelet du försöker ladda kräver att ytterligare filer dumpas från din Switch innan du spelar.&lt;br/&gt;&lt;br/&gt;För mer information om dumpning av dessa filer, se följande wiki sida: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumpning System Arkiv och Delade Teckensnitt från en Switchkonsol&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vill du avsluta till spellistan? Fortsatt emulering kan leda till kraschar, skadad spara data och andra buggar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>yuzu kunde inte lokalisera ett Switchsystemarkiv. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>yuzu kunde inte lokalisera ett Switchsystemarkiv: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Systemarkivet Hittades Inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Systemarkiv Saknas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu kunde inte lokalisera Switchens delade fonter. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Delade Teckensnitt Hittades Inte</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Delad Font Saknas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Dödligt Fel</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu stötte på ett dödligt fel, se loggen för mer information. För mer information om åtkomst till loggen, se följande sida: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Hur man Laddar upp Loggfilen&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Vill du avsluta till spellistan? Fortsatt emulering kan leda till kraschar, skadad spara data och andra buggar.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Allvarligt fel påträffat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Bekräfta Nyckel Rederivering</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4707,37 +4671,37 @@ och eventuellt göra säkerhetskopior.
Detta raderar dina autogenererade nyckelfiler och kör nyckelderivationsmodulen.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Saknade säkringar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- Saknar BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- Saknar BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- Saknar PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Deriveringsdelar saknas</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4746,39 +4710,39 @@ Detta kan ta upp till en minut beroende
på systemets prestanda.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Härleda Nycklar</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Välj RomFS Dumpa Mål</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Välj vilken RomFS du vill dumpa.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Är du säker på att du vill stänga yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Är du säker på att du vill stoppa emuleringen? Du kommer att förlora osparade framsteg.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5323,7 +5287,7 @@ startskärmen.</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5422,15 +5386,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5479,8 +5438,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[inte inställd]</translation>
</message>
@@ -5491,10 +5450,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Axel %1%2</translation>
</message>
@@ -5505,9 +5464,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[okänd]</translation>
</message>
@@ -5633,76 +5592,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Hem</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Touch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[oanvänd]</translation>
</message>
diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts
index 6b7217187..67ca00872 100644
--- a/dist/languages/tr_TR.ts
+++ b/dist/languages/tr_TR.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>İptal Et</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Touchpad&apos;inizin sol üst köşesine&lt;br&gt; dokunun.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Şimdi touchpad&apos;inizin sağ alt köşesine&lt;br&gt; dokunun.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Yapılandırma Tamamlandı!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>Tamam</translation>
</message>
@@ -893,49 +893,49 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Üstveri Cache&apos;ini Sıfırla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>NAND Konumunu Seç...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Emüle Edilmiş SD Kart Konumunu Seç...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>Oyun Kartuşu Konumunu Seç...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>Dump Konumunu Seç...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Mod Yükleme Konumunu Seç...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>Metadata Cache&apos;i zaten boş.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>İşlem başarıyla tamamlandı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>Metadata Cache&apos;i silinemedi. Kullanımda ya da oluşturulmamış olabilir.</translation>
</message>
@@ -996,36 +996,46 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Emülasyon devam ederken çıkışı onaylayın</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Oyun başlatılırken kullanıcı verisi iste</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Arka plana alındığında emülasyonu durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Hareketsizlik durumunda imleci gizle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Tüm Ayarları Sıfırla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Bu seçenek tüm genel ve oyuna özgü ayarları silecektir. Oyun dizinleri, profiller ve giriş profilleri silinmeyecektir. Devam etmek istiyor musunuz?</translation>
</message>
@@ -1413,86 +1423,6 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
<translation>[bekleniyor]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Eksi</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Artı</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1902,7 +1832,7 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Sol Analog</translation>
</message>
@@ -1996,14 +1926,14 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2022,7 +1952,7 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Artı</translation>
</message>
@@ -2035,15 +1965,15 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2100,225 +2030,230 @@ Bu seçenek belleğe yazma/okuma işlemlerindeki güvenlik kontrolünü kaldıra
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Sağ Analog</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Temizle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[belirlenmedi]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>Tuş ayarla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>Tuşları ters çevir</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>Ekseni ters çevir</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>Alt sınır ayarla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>%0 ve %100 arasında bir değer seçin</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Analog Çubuğu Ayarla</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Tamama bastıktan sonra, joystikinizi önce yatay sonra dikey olarak hareket ettirin.
Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak hareket ettirin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>Ölü Bölge: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>Düzenleyici Aralığı: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>İkili Joyconlar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Sol Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Sağ Joycon</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Handheld</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube Kontrolcüsü</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>Poke Ball Plus</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>NES Kontrolcüsü</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>SNES Kontrolcüsü</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>N64 Kontrolcüsü</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Sega Genesis</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Başlat / Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>Kontrol Çubuğu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Çubuğu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Salla!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[bekleniyor]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Yeni Profil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Bir profil ismi girin:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Kontrol Profili Oluştur</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Girilen profil ismi geçerli değil!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; kontrol profili oluşturulamadı </translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Kontrol Profilini Kaldır</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; kontrol profili kaldırılamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Kontrol Profilini Yükle</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; kontrol profili yüklenemedi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Kontrol Profilini Kaydet</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>&quot;%1&quot; kontrol profili kaydedilemedi</translation>
</message>
@@ -2366,7 +2301,7 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Yapılandır</translation>
</message>
@@ -2402,7 +2337,7 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Test</translation>
</message>
@@ -2417,82 +2352,82 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har
<translation>Server&apos;ı Kaldır</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Daha Fazlası&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Port numarasında geçersiz karakterler var</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Port 0 ila 65353 aralığında olmalıdır</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>IP adresi geçerli değil</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Bu UDP sunucusu zaten var</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>8&apos;den fazla server eklenemez</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Test Ediliyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Yapılandırılıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Test Başarılı</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Bilgi başarıyla sunucudan kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Test Başarısız</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Serverdan geçerli veri alınamadı.&lt;br&gt;Lütfen sunucunun doğru ayarlandığını ya da adres ve portun doğru olduğunu kontrol edin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP testi ya da yapılandırılması devrede.&lt;br&gt;Lütfen bitmesini bekleyin.</translation>
</message>
@@ -3404,7 +3339,7 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
<translation>Yeni Ad:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[tuşa basın]</translation>
</message>
@@ -3619,68 +3554,73 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Titreşim</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Oyuncu 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Oyuncu 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Oyuncu 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Oyuncu 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Oyuncu 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Oyuncu 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Oyuncu 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Oyuncu 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>Ayarlar</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>Doğru Titreşimi Etkinleştir</translation>
</message>
@@ -3888,440 +3828,430 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne
<translation>Bir Switch karesini emüle etmekte geçen zaman, karelimitleme ve v-sync hariç. Tam hız emülasyon için bu en çok 16,67 ms olmalı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>Geçersiz yapılandırma tespit edildi</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>Handheld kontrolcü dock modunda kullanılamaz. Pro kontrolcü seçilecek.</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>DOCK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>&amp;Son Dosyaları Temizle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>&amp;Devam Et</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu şu anda bir oyun çalıştırıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Uyarı, Eski Oyun Formatı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Bu oyun için dekonstrükte ROM formatı kullanıyorsunuz, bu fromatın yerine NCA, NAX, XCI ve NSP formatları kullanılmaktadır. Dekonstrükte ROM formatları ikon, üst veri ve güncelleme desteği içermemektedir.&lt;br&gt;&lt;br&gt;Yuzu&apos;nun desteklediği çeşitli Switch formatları için&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;Wiki&apos;yi ziyaret edin&lt;/a&gt;. Bu mesaj yeniden gösterilmeyecektir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>ROM yüklenirken hata oluştu!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Bu ROM biçimi desteklenmiyor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Video çekirdeğini başlatılırken bir hata oluştu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu video çekirdeğini çalıştırırken bir hatayla karşılaştı. Bu sorun genellikle eski GPU sürücüleri sebebiyle ortaya çıkar. Daha fazla detay için lütfen log dosyasına bakın. Log dosyasını incelemeye dair daha fazla bilgi için lütfen bu sayfaya ulaşın: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;Log dosyası nasıl yüklenir&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>ROM yüklenirken hata oluştu! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;Lütfen dosyalarınızı yeniden dump etmek için&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu hızlı başlangıç kılavuzu&apos;nu&lt;/a&gt; takip edin.&lt;br&gt; Yardım için yuzu wiki&lt;/a&gt;veya yuzu Discord&apos;una&lt;/a&gt; bakabilirsiniz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Bilinmeyen bir hata oluştu. Lütfen daha fazla detay için kütüğe göz atınız.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>Kayıt Verisi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod Verisi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>%1 klasörü açılırken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Klasör mevcut değil!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>Transfer Edilebilir Shader Cache&apos;ini Açarken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>Bu oyun için shader cache konumu oluşturulamadı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>İçerikler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>Güncelleme</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>Girdiyi Kaldır</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>%1 Adlı Oyunu Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>Başarıyla Kaldırıldı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>Yüklenmiş oyun başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>%1 Adlı Oyun Kaldırılırken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>Asıl oyun NAND&apos;de kurulu değil ve kaldırılamaz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>Yüklenmiş güncelleme başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>Bu oyun için yüklenmiş bir güncelleme yok.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>Bu oyun için yüklenmiş bir DLC yok.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>%1 yüklenmiş DLC başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>OpenGL Transfer Edilebilir Shader Cache&apos;ini Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>Vulkan Transfer Edilebilir Shader Cache&apos;ini Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>Tüm Transfer Edilebilir Shader Cache&apos;leri Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>Oyuna Özel Yapılandırmayı Kaldırmak İstediğinize Emin Misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>Dosyayı Sil</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>Transfer Edilebilir Shader Cache Kaldırılırken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>Bu oyun için oluşturulmuş bir shader cache yok.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>Transfer edilebilir shader cache başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>Transfer edilebilir shader cache kaldırılamadı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>Transfer Edilebilir Shader Cache&apos;ler Kaldırılırken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>Transfer edilebilir shader cacheler başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>Transfer edilebilir shader cache konumu kaldırılamadı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>Oyuna Özel Yapılandırma Kaldırılırken Bir Hata Oluştu.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>Bu oyun için bir özel yapılandırma yok.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>Oyuna özel yapılandırma başarıyla kaldırıldı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>Oyuna özel yapılandırma kaldırılamadı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS Çıkartımı Başarısız!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>RomFS dosyaları kopyalanırken bir hata oluştu veya kullanıcı işlemi iptal etti.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>Full</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>Çerçeve</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>RomFS Dump Modunu Seçiniz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Lütfen RomFS&apos;in nasıl dump edilmesini istediğinizi seçin.&lt;br&gt;&quot;Full&quot; tüm dosyaları yeni bir klasöre kopyalarken &lt;br&gt;&quot;skeleton&quot; sadece klasör yapısını oluşturur.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>%1 konumunda RomFS çıkarmaya yetecek alan yok. Lütfen yer açın ya da Emülasyon &gt; Yapılandırma &gt; Sistem &gt; Dosya Sistemi &gt; Dump konumu kısmından farklı bir çıktı konumu belirleyin.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>RomFS çıkartılıyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>İptal</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS Çıkartımı Başarılı!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>İşlem başarıyla tamamlandı.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>%1 Açılırken Bir Hata Oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Klasör Seç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Özellikler</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Oyun özellikleri yüklenemedi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch Çalıştırılabilir Dosyası (%1);;Tüm Dosyalar (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Dosya Aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Çıkartılmış ROM klasörünü aç</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Geçersiz Klasör Seçildi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Seçtiğiniz klasör bir &quot;main&quot; dosyası içermiyor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Yüklenilebilir Switch Dosyası (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>Dosya Kur</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>%n dosya kaldı</numerusform><numerusform>%n dosya kaldı</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>&quot;%1&quot; dosyası kuruluyor...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>Kurulum Sonuçları</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>Olası çakışmaları önlemek için oyunları NAND&apos;e yüklememenizi tavsiye ediyoruz.
Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>%n dosya güncel olarak yüklendi
@@ -4329,7 +4259,7 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</tran
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n dosyanın üstüne yazıldı
@@ -4337,7 +4267,7 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</tran
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n dosya yüklenemedi
@@ -4345,367 +4275,401 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın.</tran
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Sistem Uygulaması</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Sistem Arşivi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Sistem Uygulama Güncellemesi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Yazılım Paketi (Tür A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Yazılım Paketi (Tür B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Oyun</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Oyun Güncellemesi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Oyun DLC&apos;si</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Başlık</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>NCA Kurulum Tipi Seçin...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Lütfen bu NCA dosyası için belirlemek istediğiniz başlık türünü seçiniz:
(Çoğu durumda, varsayılan olan &apos;Oyun&apos; kullanılabilir.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Kurulum Başarısız Oldu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>NCA için seçtiğiniz başlık türü geçersiz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Dosya Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Dosya &quot;%1&quot; Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>Tamam</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Kayıp yuzu Hesabı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Oyun uyumluluk test çalışması göndermek için öncelikle yuzu hesabınla giriş yapmanız gerekiyor.&lt;br&gt;&lt;br/&gt;Yuzu hesabınızla giriş yapmak için, Emülasyon &amp;gt; Yapılandırma &amp;gt; Web&apos;e gidiniz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>URL açılırken bir hata oluştu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>URL &quot;%1&quot; açılamıyor.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>TAS kayıtta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>Oyuncu 1&apos;in dosyasının üstüne yazılsın mı?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>Geçersiz yapılandırma tespit edildi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>Handheld kontrolcü dock modunda kullanılamaz. Pro kontrolcü seçilecek.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo Dosyası (%1);; Tüm Dosyalar (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Amiibo Yükle</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Amiibo veri dosyasını açarken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>&quot;%1&quot; Amiibo dosyası okunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Amiibo veri dosyasını okurken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Amiibo verisi tamamen okunamadı. %1 byte okunması bekleniyordu, fakat bunun sadece %2&apos;si okunabildi.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Amiibo verisi yüklenirken hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Amiibo verisi yüklenemedi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Ekran Görüntüsü Al</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG görüntüsü (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS durumu: %1%2 çalışıyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS durumu: %1 kaydediliyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS durumu: %1%2 boşta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS durumu: Geçersiz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;Çalıştırmayı durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Başlat</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>K&amp;aydetmeyi Durdur</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>K&amp;aydet</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>Oluşturuluyor: %n shader</numerusform><numerusform>Oluşturuluyor: %n shader</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>Ölçek: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Hız %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Hız: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>Oyun: %1 FPS (Sınırsız)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Oyun: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Kare: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU YÜKSEK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EKSTREM</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU HATASI</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>EN YAKIN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>BILINEAR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>BICUBIC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>GAUSYEN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>SCALEFORCE</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>NO AA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Yüklemeye çalıştığınız oyun oynanmadan önce Switch&apos;inizden ek dosyaların alınmasını gerektiriyor.&lt;br/&gt;&lt;br/&gt;Bu dosyaları nasıl alacağınız hakkında daha fazla bilgi için, lütfen bu wiki sayfasına göz atınız: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Konsolunuzdan Sistem Arşivleri ve Shared Fontları Almak&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;oyun listesine geri dönmek ister misiniz? Emülasyona devam etmek çökmelere, kayıt dosyalarının bozulmasına veya başka hatalara sebep verebilir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>Yuzu bir Switch sistem arşivi bulamadı. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>Yuzu bir Switch sistem arşivi bulamadı: %1. %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Sistem Arşivi Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Sistem Arşivi Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>Yuzu Switch shared fontlarını bulamadı. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Shared Font&apos;lar Bulunamadı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Shared Font Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Önemli Hata</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Yuzu önemli bir hatayla karşılaştı, lütfen daha fazla detay için kütüğe bakınız. Kütüğe erişmek hakkında daha fazla bilgi için, lütfen bu sayfaya göz atınız: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Log Dosyası Nasıl Yüklenir&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Oyun listesine geri dönmek ister misiniz? Emülasyona devam etmek çökmelere, kayıt dosyalarının bozulmasına veya başka hatalara sebep olabilir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>Önemli Bir Hatayla Karşılaşıldı</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Anahtar Yeniden Türetimini Onayla</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4722,37 +4686,37 @@ ve opsiyonel olarak yedekler alın.
Bu sizin otomatik oluşturulmuş anahtar dosyalarınızı silecek ve anahtar türetme modülünü tekrar çalıştıracak.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>Anahtarlar Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- BOOT0 Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation>- BCPKG2-1-Normal-Main Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- PRODINFO Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>Türeten Bileşenleri Kayıp</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>Şifreleme anahtarları eksik. &lt;br&gt;Lütfen takip edin&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu hızlı başlangıç kılavuzunu&lt;/a&gt;tüm anahtarlarınızı, aygıt yazılımınızı ve oyunlarınızı almada.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4761,39 +4725,39 @@ Bu sistem performansınıza bağlı olarak
bir dakika kadar zaman alabilir.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Anahtarlar Türetiliyor</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>RomFS Dump Hedefini Seçiniz</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Lütfen dump etmek istediğiniz RomFS&apos;i seçiniz.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>yuzu&apos;yu kapatmak istediğinizden emin misiniz?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Emülasyonu durdurmak istediğinizden emin misiniz? Kaydedilmemiş veriler kaybolur.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5342,8 +5306,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>&amp;Amiibo Yükle...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5445,15 +5409,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>BAŞLAT/DURDUR</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>Şarj Oluyor</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5502,8 +5461,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[belirlenmedi]</translation>
</message>
@@ -5514,10 +5473,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Eksen %1%2</translation>
</message>
@@ -5528,9 +5487,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[bilinmeyen]</translation>
</message>
@@ -5656,76 +5615,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Dokunmatik</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[belirsiz]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[geçersiz]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Hat %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2Eksen %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2Eksen %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2Hareket %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2Tuş %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[kullanılmayan]</translation>
</message>
diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts
new file mode 100644
index 000000000..a8f95c86a
--- /dev/null
+++ b/dist/languages/vi.ts
@@ -0,0 +1,6202 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="vi" sourcelanguage="en_US">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="14"/>
+ <source>About yuzu</source>
+ <translation>Thông tin về yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="30"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/icons/yuzu.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/icons/yuzu.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="60"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;yuzu&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:28pt;&quot;&gt;yuzu&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="73"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;%1 (%2)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;%1 (%2)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="86"/>
+ <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'MS Shell Dlg 2'; font-size:12pt;&quot;&gt;yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv2.0.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;This software should not be used to play games you have not legally obtained.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:11pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;yuzu là một phần mềm giả lập thử nghiệm mã nguồn mở cho máy Nintendo Switch, được cấp phép theo giấy phép GPLv2.0.&lt;/span&gt;&lt;/p&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:12pt;&quot;&gt;Bạn không được phép sử dụng phần mềm này để chơi những trò chơi mà bạn sở hữu một cách bất hợp pháp.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="118"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://yuzu-emu.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Website&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Source Code&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/graphs/contributors&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Contributors&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/blob/master/license.txt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;License&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;a href=&quot;https://yuzu-emu.org/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Trang web&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Mã nguồn&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/graphs/contributors&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Những người đóng góp&lt;/span&gt;&lt;/a&gt; | &lt;a href=&quot;https://github.com/yuzu-emu/yuzu/blob/master/license.txt&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;Bản quyền&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/aboutdialog.ui" line="134"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; is a trademark of Nintendo. yuzu is not affiliated with Nintendo in any way.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:7pt;&quot;&gt;&amp;quot;Nintendo Switch&amp;quot; là thương hiệu của Nintendo. yuzu không hề có quan hệ với Nintendo dưới bất kỳ hình thức nào.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>CalibrationConfigurationDialog</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="29"/>
+ <source>Communicating with the server...</source>
+ <translation>Đang giao tiếp với máy chủ...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="30"/>
+ <source>Cancel</source>
+ <translation>Hủy bỏ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
+ <source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
+ <translation>Hãy chạm vào góc trên cùng&lt;br&gt;bên trái trên touchpad của bạn.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
+ <source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
+ <translation>Giờ hãy chạm vào góc dưới cùng&lt;br&gt;bên phải trên touchpad của bạn.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
+ <source>Configuration completed!</source>
+ <translation>Đã hoàn thành quá trình thiết lập!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+</context>
+<context>
+ <name>CompatDB</name>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="20"/>
+ <source>Report Compatibility</source>
+ <translation>Báo cáo độ tương thích</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="27"/>
+ <location filename="../../src/yuzu/compatdb.ui" line="63"/>
+ <source>Report Game Compatibility</source>
+ <translation>Báo cáo độ tương thích trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="36"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Should you choose to submit a test case to the &lt;/span&gt;&lt;a href=&quot;https://yuzu-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;yuzu Compatibility List&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, The following information will be collected and displayed on the site:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Hardware Information (CPU / GPU / Operating System)&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Which version of yuzu you are running&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The connected yuzu account&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Nếu bạn chọn gửi bản kiểm tra vào &lt;/span&gt;&lt;a href=&quot;https://yuzu-emu.org/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;danh sách tương thích yuzu&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, Thông tin sau sẽ được thu thập và hiển thị lên trang web:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Thông tin phần cứng (CPU / GPU / Hệ điều hành)&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Phiên bản yuzu bạn đang chạy&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Tài khoản yuzu đang kết nối&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="72"/>
+ <source>Perfect</source>
+ <translation>Tốt nhất</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="79"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions flawlessly with no audio or graphical glitches.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Có thể chơi một cách mượt mà mà không có lỗi âm thanh hoặc đồ họa nào.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="89"/>
+ <source>Great </source>
+ <translation>Tốt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="96"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions with minor graphical or audio glitches and is playable from start to finish. May require some workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Có thể chơi từ đầu đến cuối nhưng vẫn có một số lỗi nhỏ về đồ họa hoặc âm thanh. Có thể sẽ cần tới một vài tinh chỉnh nào đó.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="106"/>
+ <source>Okay</source>
+ <translation>Tạm ổn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="113"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions with major graphical or audio glitches, but game is playable from start to finish with workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tạm chơi được nhưng có lỗi đồ họa hoặc âm thanh một cách đáng kể, tuy vậy vẫn có thể chơi hết từ đầu đến cuối với một số tinh chỉnh.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="123"/>
+ <source>Bad</source>
+ <translation>Không tốt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="130"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game chạy được, tuy nhiên với nhiều lỗi về đồ hoạ và âm thanh. Không thể tiếp tục ở một số khu vực trong game kể cả với tinh chỉnh.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="140"/>
+ <source>Intro/Menu</source>
+ <translation>Phần mở đầu/Menu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="147"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Hoàn toàn không thể chơi được do có nhiều lỗi đồ họa hoặc âm thanh. Không thể chơi tiếp sau khi bấm nút bắt đầu trò chơi.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="157"/>
+ <source>Won&apos;t Boot</source>
+ <translation>Không khởi động</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="170"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The game crashes when attempting to startup.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Trò chơi sẽ thoát đột ngột khi khởi động.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="182"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Independent of speed or performance, how well does this game play from start to finish on this version of yuzu?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Không phụ thuộc vào tốc độ hay hiệu suất, trò chơi này chơi như thế nào từ đầu đến cuối trên phiên bản này của yuzu?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.ui" line="206"/>
+ <source>Thank you for your submission!</source>
+ <translation>Cảm ơn bạn đã gửi đến cho chúng tôi!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.cpp" line="59"/>
+ <source>Submitting</source>
+ <translation>Đang gửi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.cpp" line="72"/>
+ <source>Communication error</source>
+ <translation>Đã xảy ra lỗi giao tiếp với máy chủ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.cpp" line="73"/>
+ <source>An error occurred while sending the Testcase</source>
+ <translation>Có lỗi xảy ra khi gửi Testcase</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/compatdb.cpp" line="75"/>
+ <source>Next</source>
+ <translation>Tiếp theo</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureAudio</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="14"/>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="20"/>
+ <source>Audio</source>
+ <translation>Âm thanh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="28"/>
+ <source>Output Engine:</source>
+ <translation>Hệ thống xuất:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="42"/>
+ <source>Audio Device:</source>
+ <translation>Thiết bị âm thanh:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="70"/>
+ <source>Use global volume</source>
+ <translation>Sử dụng âm lượng trong cài đặt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="75"/>
+ <source>Set volume:</source>
+ <translation>Âm lượng tuỳ chỉnh:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="83"/>
+ <source>Volume:</source>
+ <translation>Âm lượng:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.ui" line="128"/>
+ <source>0 %</source>
+ <translation>0 %</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_audio.cpp" line="97"/>
+ <source>%1%</source>
+ <comment>Volume percentage (e.g. 50%)</comment>
+ <translation>%1%</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureCpu</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="17"/>
+ <source>CPU</source>
+ <translation>CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="25"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="34"/>
+ <source>Accuracy:</source>
+ <translation>Độ chính xác</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="42"/>
+ <source>Auto</source>
+ <translation>Tự động</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="47"/>
+ <source>Accurate</source>
+ <translation>Tuyệt đối</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="52"/>
+ <source>Unsafe</source>
+ <translation>Tương đối</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="63"/>
+ <source>We recommend setting accuracy to &quot;Auto&quot;.</source>
+ <translation>Chúng tôi khuyến khích sử dụng chế độ &quot;Tự động&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="80"/>
+ <source>Unsafe CPU Optimization Settings</source>
+ <translation>Cài đặt tối ưu cho CPU ở chế độ tương đối</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="86"/>
+ <source>These settings reduce accuracy for speed.</source>
+ <translation>Những cài đặt sau giảm độ chính xác của giả lập để đổi lấy tốc độ.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="96"/>
+ <source>
+ &lt;div&gt;This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.&lt;/div&gt;
+ </source>
+ <translation>
+ &lt;div&gt;Chức năng này tăng tốc độ giả lập bằng cách giảm độ chính xác của tập lệnh phép tính gộp cộng và nhân (FMA) trên các dòng CPU không hỗ trợ nó.&lt;/div&gt;
+</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="101"/>
+ <source>Unfuse FMA (improve performance on CPUs without FMA)</source>
+ <translation>Không dùng FMA (tăng hiệu suất cho các dòng CPU không hỗ trợ FMA)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="108"/>
+ <source>
+ &lt;div&gt;This option improves the speed of some approximate floating-point functions by using less accurate native approximations.&lt;/div&gt;
+ </source>
+ <translation>
+ &lt;div&gt;Chức năng này cải thiện tốc độ của một số chức năng dấu phẩy động tương đối bằng cách sử dụng tính năng làm tròn kém chính xác hơn.&lt;/div&gt;
+</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="113"/>
+ <source>Faster FRSQRTE and FRECPE</source>
+ <translation>Chạy FRSQRTE và FRECPE nhanh hơn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="120"/>
+ <source>
+ &lt;div&gt;This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes.&lt;/div&gt;
+ </source>
+ <translation>
+ &lt;div&gt;Tùy chọn này cải thiện tốc độ của các hàm dấu phẩy động ASIMD 32 bit bằng cách chạy với các chế độ làm tròn không chính xác.&lt;/div&gt;
+ </translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="125"/>
+ <source>Faster ASIMD instructions (32 bits only)</source>
+ <translation>Các lệnh ASIMD nhanh hơn (chỉ áp dụng cho 32 bit)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="132"/>
+ <source>
+ &lt;div&gt;This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions.&lt;/div&gt;
+ </source>
+ <translation>
+&lt;div&gt;Tùy chọn này sẽ cải thiện tốc độ bằng việc gỡ bỏ Kiểm tra NaN. Hãy nhớ là tùy chọn cũng sẽ giảm độ chính xác cho các dòng lệnh floating-point.&lt;/div&gt;
+</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="137"/>
+ <source>Inaccurate NaN handling</source>
+ <translation>Xử lí NaN gặp lỗi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="144"/>
+ <source>
+ &lt;div&gt;This option improves speed by eliminating a safety check before every memory read/write in guest. Disabling it may allow a game to read/write the emulator's memory.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="149"/>
+ <source>Disable address space checks</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu.ui" line="174"/>
+ <source>CPU settings are available only when game is not running.</source>
+ <translation>Cài đặt CPU chỉ có sẵn khi không chạy trò chơi.</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureCpuDebug</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="17"/>
+ <source>CPU</source>
+ <translation>CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="25"/>
+ <source>Toggle CPU Optimizations</source>
+ <translation>Tuỳ chọn cho tối ưu CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="31"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;For debugging only.&lt;/span&gt;&lt;br/&gt;If you&apos;re not sure what these do, keep all of these enabled. &lt;br/&gt;These settings, when disabled, only take effect when CPU Debugging is enabled. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Chỉ dành cho việc gỡ lỗi.&lt;/span&gt;&lt;br/&gt;Nếu bạn không biết những sự lựa chọn này làm gì, hãy bật tất cả.&lt;br/&gt;Những cài đặt này, khi tắt, chỉ hiệu quả khi bật &quot;Gỡ lỗi CPU&quot;. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="41"/>
+ <source>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;This optimization speeds up memory accesses by the guest program.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it inlines accesses to PageTable::pointers into emitted code.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.&lt;/div&gt;
+ </source>
+ <translation>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Sự tối ưu hóa này làm cho việc truy cập bộ nhớ của chương trình khách nhanh hơn.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Bật nó giúp PageTable::pointers có thể được truy cập trong mã được phát ra.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Tắt nó làm cho mọi truy cập vào bộ nhớ bắt buộc phải qua các function Memory::Read/Memory::Write.&lt;/div&gt;
+ </translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="48"/>
+ <source>Enable inline page tables</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="55"/>
+ <source>
+ &lt;div&gt;This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="60"/>
+ <source>Enable block linking</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="67"/>
+ <source>
+ &lt;div&gt;This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="72"/>
+ <source>Enable return stack buffer</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="79"/>
+ <source>
+ &lt;div&gt;Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="84"/>
+ <source>Enable fast dispatcher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="91"/>
+ <source>
+ &lt;div&gt;Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="96"/>
+ <source>Enable context elimination</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="103"/>
+ <source>
+ &lt;div&gt;Enables IR optimizations that involve constant propagation.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="108"/>
+ <source>Enable constant propagation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="115"/>
+ <source>
+ &lt;div&gt;Enables miscellaneous IR optimizations.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="120"/>
+ <source>Enable miscellaneous optimizations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="127"/>
+ <source>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;When enabled, a misalignment is only triggered when an access crosses a page boundary.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;When disabled, a misalignment is triggered on all misaligned accesses.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="133"/>
+ <source>Enable misalignment check reduction</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="140"/>
+ <source>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;This optimization speeds up memory accesses by the guest program.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all memory accesses to use Software MMU Emulation.&lt;/div&gt;
+ </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="147"/>
+ <source>Enable Host MMU Emulation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_cpu_debug.ui" line="172"/>
+ <source>CPU settings are available only when game is not running.</source>
+ <translation>Cài đặt CPU chỉ có sẵn khi không chạy trò chơi.</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureDebug</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="9"/>
+ <source>Logging</source>
+ <translation>Báo cáo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="17"/>
+ <source>Global Log Filter</source>
+ <translation>Bộ lọc báo cáo chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="29"/>
+ <source>Show Log in Console</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="36"/>
+ <source>Open Log Location</source>
+ <translation>Mở vị trí sổ ghi chép</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="46"/>
+ <source>When checked, the max size of the log increases from 100 MB to 1 GB</source>
+ <translation>Khi tích vào, dung lượng tối đa cho file log chuyển từ 100 MB lên 1 GB</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="49"/>
+ <source>Enable Extended Logging**</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="59"/>
+ <source>Homebrew</source>
+ <translation>Homebrew</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="67"/>
+ <source>Arguments String</source>
+ <translation>Xâu lệnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="82"/>
+ <source>Graphics</source>
+ <translation>Đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="91"/>
+ <source>When checked, the graphics API enters a slower debugging mode</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="94"/>
+ <source>Enable Graphics Debugging</source>
+ <translation>Kích hoạt chế độ gỡ lỗi đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="101"/>
+ <source>When checked, it enables Nsight Aftermath crash dumps</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="104"/>
+ <source>Enable Nsight Aftermath</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="114"/>
+ <source>When checked, it will dump all the original assembler shaders from the disk shader cache or game as found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="117"/>
+ <source>Dump Game Shaders</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="127"/>
+ <source>When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="130"/>
+ <source>Disable Macro JIT</source>
+ <translation>Không dùng Macro JIT</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="137"/>
+ <source>When checked, yuzu will log statistics about the compiled pipeline cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="140"/>
+ <source>Enable Shader Feedback</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="147"/>
+ <source>When checked, it executes shaders without loop logic changes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="150"/>
+ <source>Disable Loop safety checks</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="160"/>
+ <source>Debugging</source>
+ <translation>Vá lỗi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="166"/>
+ <source>Enable FS Access Log</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="173"/>
+ <source>Enable Verbose Reporting Services**</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="183"/>
+ <source>Advanced</source>
+ <translation>Nâng Cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="189"/>
+ <source>Kiosk (Quest) Mode</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="196"/>
+ <source>Enable CPU Debugging</source>
+ <translation>Bật Vá Lỗi CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="203"/>
+ <source>Enable Debug Asserts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="210"/>
+ <source>Enable Auto-Stub**</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="217"/>
+ <source>Enable all Controller Types</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug.ui" line="232"/>
+ <source>**This will be reset automatically when yuzu closes.</source>
+ <translation>**Sẽ tự động thiết lập lại khi tắt yuzu.</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureDebugController</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_controller.ui" line="14"/>
+ <source>Configure Debug Controller</source>
+ <translation>Thiết lập bộ điều khiển vá lỗi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_controller.ui" line="40"/>
+ <source>Clear</source>
+ <translation>Làm trống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_controller.ui" line="47"/>
+ <source>Defaults</source>
+ <translation>Quay về mặc định</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureDebugTab</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_tab.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_tab.ui" line="17"/>
+ <location filename="../../src/yuzu/configuration/configure_debug_tab.cpp" line="17"/>
+ <source>Debug</source>
+ <translation>Vá lỗi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_debug_tab.cpp" line="18"/>
+ <source>CPU</source>
+ <translation>CPU</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureDialog</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure.ui" line="20"/>
+ <source>yuzu Configuration</source>
+ <translation>Thiết lập yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="59"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="162"/>
+ <source>Audio</source>
+ <translation>Âm thanh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="60"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="160"/>
+ <source>CPU</source>
+ <translation>CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="61"/>
+ <source>Debug</source>
+ <translation>Gỡ lỗi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="62"/>
+ <source>Filesystem</source>
+ <translation>Hệ thống tệp tin</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="63"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="156"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="64"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="161"/>
+ <source>Graphics</source>
+ <translation>Đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="65"/>
+ <source>GraphicsAdvanced</source>
+ <translation>Đồ họa Nâng cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="66"/>
+ <source>Hotkeys</source>
+ <translation>Phím tắt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="67"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="163"/>
+ <source>Controls</source>
+ <translation>Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="68"/>
+ <source>Profiles</source>
+ <translation>Hồ sơ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="69"/>
+ <source>Network</source>
+ <translation>Mạng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="70"/>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="158"/>
+ <source>System</source>
+ <translation>Hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="71"/>
+ <source>Game List</source>
+ <translation>Danh sách trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_dialog.cpp" line="72"/>
+ <source>Web</source>
+ <translation>Web</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureFilesystem</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="17"/>
+ <source>Filesystem</source>
+ <translation>File hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="25"/>
+ <source>Storage Directories</source>
+ <translation>Thư mục lưu trữ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="31"/>
+ <source>NAND</source>
+ <translation>NAND</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="38"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="58"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="143"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="51"/>
+ <source>SD Card</source>
+ <translation>Thẻ nhớ SD</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="84"/>
+ <source>Gamecard</source>
+ <translation>Thẻ nhớ trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="90"/>
+ <source>Path</source>
+ <translation>Đường dẫn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="100"/>
+ <source>Inserted</source>
+ <translation>Đã chèn vào</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="107"/>
+ <source>Current Game</source>
+ <translation>Game hiện tại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="124"/>
+ <source>Patch Manager</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="152"/>
+ <source>Dump Decompressed NSOs</source>
+ <translation>Sao chép NSO đã giải nén</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="159"/>
+ <source>Dump ExeFS</source>
+ <translation>Sao chép ExeFS</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="168"/>
+ <source>Mod Load Root</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="175"/>
+ <source>Dump Root</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="201"/>
+ <source>Caching</source>
+ <translation>Bộ nhớ đệm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="209"/>
+ <source>Cache Game List Metadata</source>
+ <translation>Lưu bộ nhớ đệm của danh sách trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
+ <source>Reset Metadata Cache</source>
+ <translation>Khôi phục bộ nhớ đệm của metadata</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
+ <source>Select Emulated NAND Directory...</source>
+ <translation>Chọn Thư Mục Giả Lập NAND...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
+ <source>Select Emulated SD Directory...</source>
+ <translation>Chọn Thư Mục Giả Lập SD...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
+ <source>Select Gamecard Path...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
+ <source>Select Dump Directory...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
+ <source>Select Mod Load Directory...</source>
+ <translation>Chọn Thư Mục Chứa Mod...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <source>The metadata cache is already empty.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
+ <source>The operation completed successfully.</source>
+ <translation>Các hoạt động đã hoàn tất thành công.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
+ <source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigureGeneral</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="17"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="25"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="50"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="57"/>
+ <source>Use global framerate cap</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="62"/>
+ <source>Set framerate cap:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="70"/>
+ <source>Requires the use of the FPS Limiter Toggle hotkey to take effect.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="73"/>
+ <source>Framerate Cap</source>
+ <translation>Giới hạn Tốc độ khung hình</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="95"/>
+ <source>x</source>
+ <translation>x</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="116"/>
+ <source>Limit Speed Percent</source>
+ <translation>Giới hạn phần trăm tốc độ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="123"/>
+ <source>%</source>
+ <translation>%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="141"/>
+ <source>Multicore CPU Emulation</source>
+ <translation>Giả lập CPU đa nhân</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <source>Confirm exit while emulation is running</source>
+ <translation>Xác nhận thoát trong khi đang chạy giả lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <source>Prompt for user on game boot</source>
+ <translation>Hiển thị cửa sổ chọn người dùng khi bắt đầu trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <source>Pause emulation when in background</source>
+ <translation>Tạm dừng giả lập khi chạy nền</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
+ <source>Hide mouse on inactivity</source>
+ <translation>Ẩn con trỏ chuột khi không dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
+ <source>Reset All Settings</source>
+ <translation>Đặt lại mọi tùy chỉnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
+ <source>yuzu</source>
+ <translation>yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
+ <source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
+ <translation>Quá trình này sẽ thiết lập lại toàn bộ tùy chỉnh và gỡ hết mọi cài đặt cho từng game riêng lẻ. Quá trình này không xóa đường dẫn tới thư mục game, hồ sơ, hay hồ sơ của thiết lập phím. Tiếp tục?</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureGraphics</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="17"/>
+ <source>Graphics</source>
+ <translation>Đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="25"/>
+ <source>API Settings</source>
+ <translation>Cài đặt API</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="64"/>
+ <source>Shader Backend:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="92"/>
+ <source>Device:</source>
+ <translation>Thiết bị đồ hoạ:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="120"/>
+ <source>API:</source>
+ <translation>API đồ hoạ:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="156"/>
+ <source>Graphics Settings</source>
+ <translation>Cài đặt đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="162"/>
+ <source>Use disk pipeline cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="169"/>
+ <source>Use asynchronous GPU emulation</source>
+ <translation>Dùng giả lập GPU không đồng bộ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="176"/>
+ <source>Accelerate ASTC texture decoding</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="198"/>
+ <source>NVDEC emulation:</source>
+ <translation>Giả lập NVDEC</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="206"/>
+ <source>No Video Output</source>
+ <translation>Không Video Đầu Ra</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="211"/>
+ <source>CPU Video Decoding</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="216"/>
+ <source>GPU Video Decoding (Default)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="242"/>
+ <source>Fullscreen Mode:</source>
+ <translation>Chế độ Toàn màn hình:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="250"/>
+ <source>Borderless Windowed</source>
+ <translation>Cửa sổ không viền</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="255"/>
+ <source>Exclusive Fullscreen</source>
+ <translation>Toàn màn hình</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="281"/>
+ <source>Aspect Ratio:</source>
+ <translation>Tỉ lệ khung hình:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="289"/>
+ <source>Default (16:9)</source>
+ <translation>Mặc định (16:9)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="294"/>
+ <source>Force 4:3</source>
+ <translation>Dùng 4:3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="299"/>
+ <source>Force 21:9</source>
+ <translation>Dùng 21:9</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="304"/>
+ <source>Stretch to Window</source>
+ <translation>Kéo dãn đến cửa sổ phần mềm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="330"/>
+ <source>Resolution:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="338"/>
+ <source>0.5X (360p/540p) [EXPERIMENTAL]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="343"/>
+ <source>0.75X (540p/810p) [EXPERIMENTAL]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="348"/>
+ <source>1X (720p/1080p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="353"/>
+ <source>2X (1440p/2160p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="358"/>
+ <source>3X (2160p/3240p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="363"/>
+ <source>4X (2880p/4320p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="368"/>
+ <source>5X (3600p/5400p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="373"/>
+ <source>6X (4320p/6480p)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="399"/>
+ <source>Window Adapting Filter:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="407"/>
+ <source>Nearest Neighbor</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="412"/>
+ <source>Bilinear</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="417"/>
+ <source>Bicubic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="422"/>
+ <source>Gaussian</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="427"/>
+ <source>ScaleForce</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="432"/>
+ <source>AMD FidelityFX™️ Super Resolution (Vulkan Only)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="458"/>
+ <source>Anti-Aliasing Method:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="466"/>
+ <source>None</source>
+ <translation>Trống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="471"/>
+ <source>FXAA</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="506"/>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="516"/>
+ <source>Use global background color</source>
+ <translation>Dùng màu nền theo cài đặt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="521"/>
+ <source>Set background color:</source>
+ <translation>Chọn màu nền:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.ui" line="529"/>
+ <source>Background Color:</source>
+ <translation>Màu nền:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics.cpp" line="34"/>
+ <source>GLASM (Assembly Shaders, NVIDIA Only)</source>
+ <translation>GLASM (Assembly Shaders, Chỉ Cho NVIDIA)</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureGraphicsAdvanced</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="17"/>
+ <source>Advanced</source>
+ <translation>Nâng cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="25"/>
+ <source>Advanced Graphics Settings</source>
+ <translation>Cài đặt đồ hoạ nâng cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="46"/>
+ <source>Accuracy Level:</source>
+ <translation>Độ chính xác:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="75"/>
+ <source>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don&apos;t notice a performance difference.</source>
+ <translation>VSync tránh cho màn hình bị &quot;xước&quot;, tuy nhiên một số cạc đồ hoạ có hiệu năng chậm hơn khi VSync được kích hoạt. Bật chức năng này nếu nó không ảnh hưởng gì đến hiệu năng.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="78"/>
+ <source>Use VSync (OpenGL only)</source>
+ <translation>Dùng VSync (chỉ dành cho OpenGL)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="85"/>
+ <source>Enables asynchronous shader compilation, which may reduce shader stutter. This feature is experimental.</source>
+ <translation>Kích hoạt tính năng tạo shader không đồng bộ nhằm tránh cho trò chơi bị giật khi tạo shader. Tính năng này vẫn đang thử nghiệm.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="88"/>
+ <source>Use asynchronous shader building (Hack)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="95"/>
+ <source>Enables Fast GPU Time. This option will force most games to run at their highest native resolution.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="98"/>
+ <source>Use Fast GPU Time (Hack)</source>
+ <translation>Tăng Tốc Thời Gian GPU (Hack)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="120"/>
+ <source>Anisotropic Filtering:</source>
+ <translation>Bộ lọc góc nghiêng:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="128"/>
+ <source>Automatic</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="133"/>
+ <source>Default</source>
+ <translation>Mặc định</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="138"/>
+ <source>2x</source>
+ <translation>2x</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="143"/>
+ <source>4x</source>
+ <translation>4x</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="148"/>
+ <source>8x</source>
+ <translation>8x</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_graphics_advanced.ui" line="153"/>
+ <source>16x</source>
+ <translation>16x</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureHotkeys</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.ui" line="14"/>
+ <source>Hotkey Settings</source>
+ <translation>Cài đặt phím nóng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.ui" line="17"/>
+ <source>Hotkeys</source>
+ <translation>Phím tắt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.ui" line="25"/>
+ <source>Double-click on a binding to change it.</source>
+ <translation>Đúp chuột vào phím đã được thiết lập để thay đổi.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.ui" line="45"/>
+ <source>Clear All</source>
+ <translation>Bỏ Trống Hết</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.ui" line="52"/>
+ <source>Restore Defaults</source>
+ <translation>Khôi phục về mặc định</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
+ <source>Action</source>
+ <translation>Hành động</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
+ <source>Hotkey</source>
+ <translation>Phím tắt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="94"/>
+ <source>Controller Hotkey</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="124"/>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="365"/>
+ <source>Conflicting Key Sequence</source>
+ <translation>Tổ hợp phím bị xung đột</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="151"/>
+ <source>The entered key sequence is already assigned to: %1</source>
+ <translation>Tổ hợp phím này đã gán với: %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="144"/>
+ <source>Home+%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="158"/>
+ <source>[waiting]</source>
+ <translation>[Chờ]</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
+ <source>Invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="329"/>
+ <source>Restore Default</source>
+ <translation>Khôi phục về mặc định</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="330"/>
+ <source>Clear</source>
+ <translation>Xóa</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="351"/>
+ <source>Conflicting Button Sequence</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="352"/>
+ <source>The default button sequence is already assigned to: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="366"/>
+ <source>The default key sequence is already assigned to: %1</source>
+ <translation>Tổ hợp phím này đã gán với: %1</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureInput</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="14"/>
+ <source>ConfigureInput</source>
+ <translation>Thiết lập đầu vào</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="39"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="42"/>
+ <source>Player 1</source>
+ <translation>Người chơi 1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="47"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="50"/>
+ <source>Player 2</source>
+ <translation>Người chơi 2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="55"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="58"/>
+ <source>Player 3</source>
+ <translation>Người chơi 3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="63"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="66"/>
+ <source>Player 4</source>
+ <translation>Người chơi 4</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="71"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="74"/>
+ <source>Player 5</source>
+ <translation>Người chơi 5</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="82"/>
+ <source>Player 6</source>
+ <translation>Người chơi 6</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="87"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="90"/>
+ <source>Player 7</source>
+ <translation>Người chơi 7</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="98"/>
+ <source>Player 8</source>
+ <translation>Người chơi 8</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="103"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="106"/>
+ <source>Advanced</source>
+ <translation>Nâng cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="138"/>
+ <source>Console Mode</source>
+ <translation>Console Mode</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="159"/>
+ <source>Docked</source>
+ <translation>Chế độ cắm TV</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="169"/>
+ <source>Undocked</source>
+ <translation>Chế độ cầm tay</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="179"/>
+ <source>Vibration</source>
+ <translation>Độ rung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="215"/>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="261"/>
+ <source>Configure</source>
+ <translation>Thiết lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="225"/>
+ <source>Motion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="296"/>
+ <source>Controllers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="324"/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="365"/>
+ <source>2</source>
+ <translation>2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="375"/>
+ <source>3</source>
+ <translation>3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="385"/>
+ <source>4</source>
+ <translation>4</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="395"/>
+ <source>5</source>
+ <translation>5</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="405"/>
+ <source>6</source>
+ <translation>6</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="415"/>
+ <source>7</source>
+ <translation>7</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="425"/>
+ <source>8</source>
+ <translation>8</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="435"/>
+ <source>Connected</source>
+ <translation>Đã kết nối</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="494"/>
+ <source>Defaults</source>
+ <translation>Quay về mặc định</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input.ui" line="537"/>
+ <source>Clear</source>
+ <translation>Xóa</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureInputAdvanced</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="14"/>
+ <source>Configure Input</source>
+ <translation>Thiết lập đầu vào</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="74"/>
+ <source>Joycon Colors</source>
+ <translation>Màu tay cầm Joycon</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="125"/>
+ <source>Player 1</source>
+ <translation>Người chơi 1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="164"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="754"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1040"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1365"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1651"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1955"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2241"/>
+ <source>L Body</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="219"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="505"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="809"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1095"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1420"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1706"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2010"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2296"/>
+ <source>L Button</source>
+ <translation>Phím L</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="295"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="581"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="885"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1171"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1496"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1782"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2086"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2372"/>
+ <source>R Body</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="350"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="636"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="940"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1226"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1551"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1837"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2141"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2427"/>
+ <source>R Button</source>
+ <translation>Phím R</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="411"/>
+ <source>Player 2</source>
+ <translation>Người chơi 2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="715"/>
+ <source>Player 3</source>
+ <translation>Người chơi 3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1001"/>
+ <source>Player 4</source>
+ <translation>Người chơi 4</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1326"/>
+ <source>Player 5</source>
+ <translation>Người chơi 5</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1612"/>
+ <source>Player 6</source>
+ <translation>Người chơi 6</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="1916"/>
+ <source>Player 7</source>
+ <translation>Người chơi 7</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2202"/>
+ <source>Player 8</source>
+ <translation>Người chơi 8</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2533"/>
+ <source>Emulated Devices</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2545"/>
+ <source>Keyboard</source>
+ <translation>Bàn phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2558"/>
+ <source>Mouse</source>
+ <translation>Chuột</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2565"/>
+ <source>Touchscreen</source>
+ <translation>Màn hình cảm ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2588"/>
+ <source>Advanced</source>
+ <translation>Nâng cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2595"/>
+ <source>Debug Controller</source>
+ <translation>Hiệu chỉnh lỗi tay cầm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2602"/>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2715"/>
+ <source>Configure</source>
+ <translation>Thiết lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2612"/>
+ <source>Other</source>
+ <translation>Khác</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2624"/>
+ <source>Emulate Analog with Keyboard Input</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2631"/>
+ <source>Requires restarting yuzu</source>
+ <translation>Phải khởi động lại yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2640"/>
+ <source>Enable XInput 8 player support (disables web applet)</source>
+ <translation>Bật hỗ trợ XInput cho 8 người (tắt web applet)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2653"/>
+ <source>Enable UDP controllers (not needed for motion)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
+ <source>Controller navigation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
+ <source>Enable mouse panning</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2686"/>
+ <source>Mouse sensitivity</source>
+ <translation>Độ nhạy chuột</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2692"/>
+ <source>%</source>
+ <translation>%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2708"/>
+ <source>Motion / Touch</source>
+ <translation>Chuyển động / Cảm ứng</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureInputPlayer</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="14"/>
+ <source>Configure Input</source>
+ <translation>Thiết lập đầu vào</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="63"/>
+ <source>Connect Controller</source>
+ <translation>Kết nối Tay cầm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="100"/>
+ <source>Input Device</source>
+ <translation>Thiết bị Nhập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="156"/>
+ <source>Profile</source>
+ <translation>Hồ sơ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="196"/>
+ <source>Save</source>
+ <translation>Lưu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="212"/>
+ <source>New</source>
+ <translation>Mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="228"/>
+ <source>Delete</source>
+ <translation>Xoá</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
+ <source>Left Stick</source>
+ <translation>Cần trái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="391"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="925"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="964"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2583"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2622"/>
+ <source>Up</source>
+ <translation>Lên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="422"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="461"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="995"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1034"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2069"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2653"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2692"/>
+ <source>Left</source>
+ <translation>Trái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="510"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1044"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1083"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2118"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2702"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2741"/>
+ <source>Right</source>
+ <translation>Phải</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="553"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="592"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1126"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1165"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2784"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2823"/>
+ <source>Down</source>
+ <translation>Xuống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="623"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="662"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2854"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2893"/>
+ <source>Pressed</source>
+ <translation>Nhấn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="672"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="711"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2903"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2942"/>
+ <source>Modifier</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="721"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2952"/>
+ <source>Range</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="754"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2985"/>
+ <source>%</source>
+ <translation>%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="797"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="3025"/>
+ <source>Deadzone: 0%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="821"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="3049"/>
+ <source>Modifier Range: 0%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="867"/>
+ <source>D-Pad</source>
+ <translation>D-Pad</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
+ <source>L</source>
+ <translation>L</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
+ <source>ZL</source>
+ <translation>ZL</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1465"/>
+ <source>Minus</source>
+ <translation>Trừ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1475"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1514"/>
+ <source>Capture</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
+ <source>Plus</source>
+ <translation>Cộng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1594"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1633"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
+ <source>ZR</source>
+ <translation>ZR</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1873"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1912"/>
+ <source>SL</source>
+ <translation>SL</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1922"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1961"/>
+ <source>SR</source>
+ <translation>SR</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2030"/>
+ <source>Motion 1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2079"/>
+ <source>Motion 2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2170"/>
+ <source>Face Buttons</source>
+ <translation>Nút chức năng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2267"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2298"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2337"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2347"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2386"/>
+ <source>A</source>
+ <translation>A</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2429"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2468"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
+ <source>Right Stick</source>
+ <translation>Cần phải</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
+ <source>Clear</source>
+ <translation>Bỏ trống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
+ <source>[not set]</source>
+ <translation>[không đặt]</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
+ <source>Toggle button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
+ <source>Invert button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
+ <source>Invert axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
+ <source>Set threshold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
+ <source>Choose a value between 0% and 100%</source>
+ <translation>Chọn một giá trị giữa 0% và 100%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <source>Set gyro threshold</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
+ <source>Map Analog Stick</source>
+ <translation>Thiết lập Cần Điều Khiển</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
+ <source>After pressing OK, first move your joystick horizontally, and then vertically.
+To invert the axes, first move your joystick vertically, and then horizontally.</source>
+ <translation>Sau khi bấm OK, di chuyển cần sang ngang, rồi sau đó sang dọc.
+Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần sang dọc trước, rồi sang ngang.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
+ <source>Deadzone: %1%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
+ <source>Modifier Range: %1%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
+ <source>Pro Controller</source>
+ <translation>Tay cầm Pro Controller</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
+ <source>Dual Joycons</source>
+ <translation>Joycon đôi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
+ <source>Left Joycon</source>
+ <translation>Joycon Trái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
+ <source>Right Joycon</source>
+ <translation>Joycon Phải</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
+ <source>Handheld</source>
+ <translation>Cầm tay</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
+ <source>GameCube Controller</source>
+ <translation>Tay cầm GameCube</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
+ <source>Poke Ball Plus</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
+ <source>NES Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
+ <source>SNES Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
+ <source>N64 Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
+ <source>Sega Genesis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
+ <source>Start / Pause</source>
+ <translation>Bắt đầu / Tạm ngưng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
+ <source>Control Stick</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
+ <source>C-Stick</source>
+ <translation>C-Stick</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
+ <source>Shake!</source>
+ <translation>Lắc!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
+ <source>[waiting]</source>
+ <translation>[Chờ]</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
+ <source>New Profile</source>
+ <translation>Hồ sơ mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
+ <source>Enter a profile name:</source>
+ <translation>Nhập tên hồ sơ:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
+ <source>Create Input Profile</source>
+ <translation>Tạo Hồ Sơ Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
+ <source>The given profile name is not valid!</source>
+ <translation>Tên hồ sơ không hợp lệ!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
+ <source>Failed to create the input profile &quot;%1&quot;</source>
+ <translation>Quá trình tạo hồ sơ phím &quot;%1&quot; thất bại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
+ <source>Delete Input Profile</source>
+ <translation>Xóa Hồ Sơ Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
+ <source>Failed to delete the input profile &quot;%1&quot;</source>
+ <translation>Quá trình xóa hồ sơ phím &quot;%1&quot; thất bại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
+ <source>Load Input Profile</source>
+ <translation>Nạp Hồ Sơ Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
+ <source>Failed to load the input profile &quot;%1&quot;</source>
+ <translation>Quá trình nạp hồ sơ phím &quot;%1&quot; thất bại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
+ <source>Save Input Profile</source>
+ <translation>Lưu Hồ Sơ Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
+ <source>Failed to save the input profile &quot;%1&quot;</source>
+ <translation>Quá trình lưu hồ sơ phím &quot;%1&quot; thất bại</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureInputProfileDialog</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_profile_dialog.ui" line="14"/>
+ <source>Create Input Profile</source>
+ <translation>Tạo Hồ Sơ Phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_profile_dialog.ui" line="40"/>
+ <source>Clear</source>
+ <translation>Bỏ trống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_profile_dialog.ui" line="47"/>
+ <source>Defaults</source>
+ <translation>Mặc định</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureMotionTouch</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="6"/>
+ <source>Configure Motion / Touch</source>
+ <translation>Tùy chỉnh Chuột / Cảm Ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="15"/>
+ <source>Touch</source>
+ <translation>Cảm Ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="23"/>
+ <source>UDP Calibration:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="30"/>
+ <source>(100, 50) - (1800, 850)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
+ <source>Configure</source>
+ <translation>Thiết lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="57"/>
+ <source>Touch from button profile:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="85"/>
+ <source>CemuhookUDP Config</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="91"/>
+ <source>You may use any Cemuhook compatible UDP input source to provide motion and touch input.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="134"/>
+ <source>Server:</source>
+ <translation>Server:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="161"/>
+ <source>Port:</source>
+ <translation>Cổng:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="188"/>
+ <source>Learn More</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
+ <source>Test</source>
+ <translation>Thử nghiệm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="214"/>
+ <source>Add Server</source>
+ <translation>Thêm Server</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="247"/>
+ <source>Remove Server</source>
+ <translation>Xóa Server</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
+ <source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
+ <translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tìm hiểu thêm&lt;/span&gt;&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
+ <source>%1:%2</source>
+ <translation>%1:%2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
+ <source>yuzu</source>
+ <translation>yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <source>Port number has invalid characters</source>
+ <translation>Cổng có kí tự không hợp lệ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <source>Port has to be in range 0 and 65353</source>
+ <translation>Cổng phải từ 0 đến 65353</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <source>IP address is not valid</source>
+ <translation>Địa chỉ IP không hợp lệ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <source>This UDP server already exists</source>
+ <translation>Server UDP đã tồn tại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <source>Unable to add more than 8 servers</source>
+ <translation>Không thể vượt quá 8 server</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
+ <source>Testing</source>
+ <translation>Thử nghiệm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
+ <source>Configuring</source>
+ <translation>Cài đặt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
+ <source>Test Successful</source>
+ <translation>Thử Nghiệm Thành Công</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <source>Successfully received data from the server.</source>
+ <translation>Nhận được dữ liệu từ server!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
+ <source>Test Failed</source>
+ <translation>Thử Nghiệm Thất Bại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
+ <source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
+ <translation>Không thể nhận được dữ liệu hợp lệ từ server. &lt;br&gt;Hãy chắc chắn server được thiết lập chính xác, từ địa chỉ lẫn cổng phải được thiết lập đúng.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
+ <source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigureNetwork</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_network.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_network.ui" line="17"/>
+ <source>Network</source>
+ <translation>Mạng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_network.ui" line="25"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_network.ui" line="34"/>
+ <source>Network Interface</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_network.cpp" line="17"/>
+ <source>None</source>
+ <translation>Trống</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigurePerGame</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="12"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="26"/>
+ <source>Info</source>
+ <translation>Thông Tin</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="85"/>
+ <source>Name</source>
+ <translation>Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="92"/>
+ <source>Title ID</source>
+ <translation>ID của game</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="129"/>
+ <source>Filename</source>
+ <translation>Tên tệp</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="156"/>
+ <source>Format</source>
+ <translation>Định dạng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="163"/>
+ <source>Version</source>
+ <translation>Phiên Bản</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="170"/>
+ <source>Size</source>
+ <translation>Kích cỡ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.ui" line="177"/>
+ <source>Developer</source>
+ <translation>Nhà Phát Hành</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="65"/>
+ <source>Add-Ons</source>
+ <translation>Bổ Sung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="66"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="67"/>
+ <source>System</source>
+ <translation>Hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="68"/>
+ <source>CPU</source>
+ <translation>CPU</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="69"/>
+ <source>Graphics</source>
+ <translation>Đồ hoạ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="70"/>
+ <source>Adv. Graphics</source>
+ <translation>Đồ Họa Nâng Cao</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="71"/>
+ <source>Audio</source>
+ <translation>Âm thanh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game.cpp" line="74"/>
+ <source>Properties</source>
+ <translation>Thuộc tính</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configuration_shared.cpp" line="93"/>
+ <source>Use global configuration (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigurePerGameAddons</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game_addons.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game_addons.ui" line="17"/>
+ <source>Add-Ons</source>
+ <translation>Bổ Sung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game_addons.cpp" line="48"/>
+ <source>Patch Name</source>
+ <translation>Tên bản vá</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_per_game_addons.cpp" line="49"/>
+ <source>Version</source>
+ <translation>Phiên Bản</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureProfileManager</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="17"/>
+ <source>Profiles</source>
+ <translation>Hồ Sơ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="25"/>
+ <source>Profile Manager</source>
+ <translation>Quản Lý Hồ Sơ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="42"/>
+ <source>Current User</source>
+ <translation>Người Dùng Hiện Tại</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="80"/>
+ <source>Username</source>
+ <translation>Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="110"/>
+ <source>Set Image</source>
+ <translation>Đặt Hình Ảnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="130"/>
+ <source>Add</source>
+ <translation>Thêm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="140"/>
+ <source>Rename</source>
+ <translation>Đổi Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="150"/>
+ <source>Remove</source>
+ <translation>Gỡ Bỏ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.ui" line="162"/>
+ <source>Profile management is available only when game is not running.</source>
+ <translation>Chỉ có thể quản lí hồ sơ khi game không chạy.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="55"/>
+ <source>%1
+%2</source>
+ <comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
+ <translation>%1
+%2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="73"/>
+ <source>Enter Username</source>
+ <translation>Điền Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="136"/>
+ <source>Users</source>
+ <translation>Người Dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="198"/>
+ <source>Enter a username for the new user:</source>
+ <translation>Chọn tên cho người dùng mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="218"/>
+ <source>Enter a new username:</source>
+ <translation>Chọn một tên mới:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="243"/>
+ <source>Confirm Delete</source>
+ <translation>Xác nhận xóa</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="244"/>
+ <source>You are about to delete user with name &quot;%1&quot;. Are you sure?</source>
+ <translation>Bạn đang xóa người dùng &quot;%1&quot;. Bạn chắc chứ?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="271"/>
+ <source>Select User Image</source>
+ <translation>Chọn Ảnh cho Người Dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="272"/>
+ <source>JPEG Images (*.jpg *.jpeg)</source>
+ <translation>Ảnh JPEG (*.jpg *.jpeg)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="281"/>
+ <source>Error deleting image</source>
+ <translation>Lỗi khi xóa ảnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="282"/>
+ <source>Error occurred attempting to overwrite previous image at: %1.</source>
+ <translation>Có lỗi khi ghi đè ảnh trước tại: %1.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="290"/>
+ <source>Error deleting file</source>
+ <translation>Lỗi xóa ảnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="291"/>
+ <source>Unable to delete existing file: %1.</source>
+ <translation>Không thể xóa ảnh hiện tại: %1.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="298"/>
+ <source>Error creating user image directory</source>
+ <translation>Lỗi khi tạo thư mục chứa ảnh người dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="299"/>
+ <source>Unable to create directory %1 for storing user images.</source>
+ <translation>Không thể tạo thư mục %1 để chứa ảnh người dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="304"/>
+ <source>Error copying user image</source>
+ <translation>Lỗi chép ảnh người dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="305"/>
+ <source>Unable to copy image from %1 to %2</source>
+ <translation>Không thể chép ảnh từ %1 sang %2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="314"/>
+ <source>Error resizing user image</source>
+ <translation>Lỗi thu phóng ảnh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_profile_manager.cpp" line="315"/>
+ <source>Unable to resize image</source>
+ <translation>Không thể thu phóng ảnh</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureSystem</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="17"/>
+ <source>System</source>
+ <translation>Hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="25"/>
+ <source>System Settings</source>
+ <translation>Cài đặt hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="33"/>
+ <source>Region:</source>
+ <translation>Vùng:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="41"/>
+ <source>Auto</source>
+ <translation>Tự động</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="46"/>
+ <source>Default</source>
+ <translation>Mặc định</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="51"/>
+ <source>CET</source>
+ <translation>CET</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="56"/>
+ <source>CST6CDT</source>
+ <translation>CST6CDT</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="61"/>
+ <source>Cuba</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="66"/>
+ <source>EET</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="71"/>
+ <source>Egypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="76"/>
+ <source>Eire</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="81"/>
+ <source>EST</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="86"/>
+ <source>EST5EDT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="91"/>
+ <source>GB</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="96"/>
+ <source>GB-Eire</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="101"/>
+ <source>GMT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="106"/>
+ <source>GMT+0</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="111"/>
+ <source>GMT-0</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="116"/>
+ <source>GMT0</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="121"/>
+ <source>Greenwich</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="126"/>
+ <source>Hongkong</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="131"/>
+ <source>HST</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="136"/>
+ <source>Iceland</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="141"/>
+ <source>Iran</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="146"/>
+ <source>Israel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="151"/>
+ <source>Jamaica</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="156"/>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="275"/>
+ <source>Japan</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="161"/>
+ <source>Kwajalein</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="166"/>
+ <source>Libya</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="171"/>
+ <source>MET</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="176"/>
+ <source>MST</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="181"/>
+ <source>MST7MDT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="186"/>
+ <source>Navajo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="191"/>
+ <source>NZ</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="196"/>
+ <source>NZ-CHAT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="201"/>
+ <source>Poland</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="206"/>
+ <source>Portugal</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="211"/>
+ <source>PRC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="216"/>
+ <source>PST8PDT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="221"/>
+ <source>ROC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="226"/>
+ <source>ROK</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="231"/>
+ <source>Singapore</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="236"/>
+ <source>Turkey</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="241"/>
+ <source>UCT</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="246"/>
+ <source>Universal</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="251"/>
+ <source>UTC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="256"/>
+ <source>W-SU</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="261"/>
+ <source>WET</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="266"/>
+ <source>Zulu</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="280"/>
+ <source>USA</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="285"/>
+ <source>Europe</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="290"/>
+ <source>Australia</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="295"/>
+ <source>China</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="300"/>
+ <source>Korea</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="305"/>
+ <source>Taiwan</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="313"/>
+ <source>Time Zone:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="320"/>
+ <source>Note: this can be overridden when region setting is auto-select</source>
+ <translation>Lưu ý: Tuỳ chọn này có thể bị ghi đè nếu cài đặt vùng là chọn tự động.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="324"/>
+ <source>Japanese (日本語)</source>
+ <translation>Tiếng Nhật (日本語)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="329"/>
+ <source>English</source>
+ <translation>Tiếng Anh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="334"/>
+ <source>French (français)</source>
+ <translation>Tiếng Pháp (French)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="339"/>
+ <source>German (Deutsch)</source>
+ <translation>Tiếng Đức (Deutsch)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="344"/>
+ <source>Italian (italiano)</source>
+ <translation>Tiếng Ý (Italiano)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="349"/>
+ <source>Spanish (español)</source>
+ <translation>Tiếng Tây Ban Nha (Spanish)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="354"/>
+ <source>Chinese</source>
+ <translation>Tiếng Trung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="359"/>
+ <source>Korean (한국어)</source>
+ <translation>Tiếng Hàn (Korean)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="364"/>
+ <source>Dutch (Nederlands)</source>
+ <translation>Tiếng Hà Lan (Dutch)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="369"/>
+ <source>Portuguese (português)</source>
+ <translation>Tiếng Bồ Đào Nha (Portuguese)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="374"/>
+ <source>Russian (Русский)</source>
+ <translation>Tiếng Nga (Русский)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="379"/>
+ <source>Taiwanese</source>
+ <translation>Tiếng Đài Loan</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="384"/>
+ <source>British English</source>
+ <translation>Tiếng Anh Anh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="389"/>
+ <source>Canadian French</source>
+ <translation>Tiếng Pháp Canada</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="394"/>
+ <source>Latin American Spanish</source>
+ <translation>Tiếng Tây Ban Nha kiểu Mỹ La-tinh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="399"/>
+ <source>Simplified Chinese</source>
+ <translation>Tiếng Trung giản thể</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="404"/>
+ <source>Traditional Chinese (正體中文)</source>
+ <translation>Tiếng Trung phồn thể (正體中文)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="409"/>
+ <source>Brazilian Portuguese (português do Brasil)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="417"/>
+ <source>Custom RTC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="424"/>
+ <source>Language</source>
+ <translation>Ngôn ngữ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="431"/>
+ <source>RNG Seed</source>
+ <translation>Hạt giống RNG</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="439"/>
+ <source>Mono</source>
+ <translation>Mono</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="444"/>
+ <source>Stereo</source>
+ <translation>Stereo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="449"/>
+ <source>Surround</source>
+ <translation>Xung quanh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="457"/>
+ <source>Console ID:</source>
+ <translation>ID bàn giao tiếp:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="464"/>
+ <source>Sound output mode</source>
+ <translation>Chế độ đầu ra âm thanh</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="478"/>
+ <source>d MMM yyyy h:mm:ss AP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="515"/>
+ <source>Regenerate</source>
+ <translation>Tạo mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.ui" line="540"/>
+ <source>System settings are available only when game is not running.</source>
+ <translation>Cài đặt hệ thống chỉ khả dụng khi trò chơi không chạy.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.cpp" line="166"/>
+ <source>This will replace your current virtual Switch with a new one. Your current virtual Switch will not be recoverable. This might have unexpected effects in games. This might fail, if you use an outdated config savegame. Continue?</source>
+ <translation>Điều này sẽ thay thế Switch ảo hiện tại của bạn bằng một cái mới. Switch ảo hiện tại của bạn sẽ không thể phục hồi lại. Điều này có thể gây ra tác dụng không mong muốn trong trò chơi. Điều này có thể thất bại, nếu thiết lập của bản lưu game đã lỗi thời. Tiếp tục?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.cpp" line="170"/>
+ <source>Warning</source>
+ <translation>Chú ý</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_system.cpp" line="178"/>
+ <source>Console ID: 0x%1</source>
+ <translation>ID của máy: 0x%1</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureTas</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="11"/>
+ <source>TAS</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="17"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Reads controller input from scripts in the same format as TAS-nx scripts.&lt;br/&gt;For a more detailed explanation, please consult the &lt;a href=&quot;https://yuzu-emu.org/help/feature/tas/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#039be5;&quot;&gt;help page&lt;/span&gt;&lt;/a&gt; on the yuzu website.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="24"/>
+ <source>To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -&gt; General -&gt; Hotkeys).</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="34"/>
+ <source>WARNING: This is an experimental feature.&lt;br/&gt;It will not play back scripts frame perfectly with the current, imperfect syncing method.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="51"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="57"/>
+ <source>Enable TAS features</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="64"/>
+ <source>Loop script</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="74"/>
+ <source>Pause execution during loads</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="88"/>
+ <source>Script Directory</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="94"/>
+ <source>Path</source>
+ <translation>Đường dẫn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.ui" line="101"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureTasDialog</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.cpp" line="20"/>
+ <source>TAS Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_tas.cpp" line="51"/>
+ <source>Select TAS Load Directory...</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigureTouchFromButton</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="14"/>
+ <source>Configure Touchscreen Mappings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="22"/>
+ <source>Mapping:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="48"/>
+ <source>New</source>
+ <translation>Mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="61"/>
+ <source>Delete</source>
+ <translation>Xoá</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="74"/>
+ <source>Rename</source>
+ <translation>Đổi Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="92"/>
+ <source>Click the bottom area to add a point, then press a button to bind.
+Drag points to change position, or double-click table cells to edit values.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.ui" line="116"/>
+ <source>Delete Point</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="80"/>
+ <source>Button</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="80"/>
+ <source>X</source>
+ <comment>X axis</comment>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="80"/>
+ <source>Y</source>
+ <comment>Y axis</comment>
+ <translation>Y</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="197"/>
+ <source>New Profile</source>
+ <translation>Hồ sơ mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="197"/>
+ <source>Enter the name for the new profile.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="208"/>
+ <source>Delete Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="208"/>
+ <source>Delete profile %1?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="221"/>
+ <source>Rename Profile</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="221"/>
+ <source>New name:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
+ <source>[press key]</source>
+ <translation>[nhấn nút]</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureTouchscreenAdvanced</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="14"/>
+ <source>Configure Touchscreen</source>
+ <translation>Thiết lập màn hình cảm ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="26"/>
+ <source>Warning: The settings in this page affect the inner workings of yuzu&apos;s emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing.</source>
+ <translation>Chú ý: Cài đặt trong trang này có thể ảnh hưởng đến hoạt động bên trong giả lập màn hình cảm ứng của yuzu&apos;s. Thay đổi chúng có thể dẫn đến hành vi không mong muốn, chẳng hạn như một phần của màn hình cảm ứng sẽ không hoạt động. Bạn chỉ nên sử dụng trang này nếu bạn biết bạn đang làm gì.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="52"/>
+ <source>Touch Parameters</source>
+ <translation>Thông số cảm ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="71"/>
+ <source>Touch Diameter Y</source>
+ <translation>Đường kính cảm ứng Y</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="91"/>
+ <source>Touch Diameter X</source>
+ <translation>Đường kính cảm ứng X</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="98"/>
+ <source>Rotational Angle</source>
+ <translation>Góc quay</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touchscreen_advanced.ui" line="132"/>
+ <source>Restore Defaults</source>
+ <translation>Khôi phục về mặc định</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureUI</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="20"/>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="28"/>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="40"/>
+ <source>None</source>
+ <translation>Trống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="21"/>
+ <source>Small (32x32)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="22"/>
+ <source>Standard (64x64)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="23"/>
+ <source>Large (128x128)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="24"/>
+ <source>Full Size (256x256)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="29"/>
+ <source>Small (24x24)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="30"/>
+ <source>Standard (48x48)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="31"/>
+ <source>Large (72x72)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="36"/>
+ <source>Filename</source>
+ <translation>Tên tệp</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="37"/>
+ <source>Filetype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="38"/>
+ <source>Title ID</source>
+ <translation>ID của game</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="39"/>
+ <source>Title Name</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigureUi</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="17"/>
+ <source>UI</source>
+ <translation>UI</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="23"/>
+ <source>General</source>
+ <translation>Chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="31"/>
+ <source>Note: Changing language will apply your configuration.</source>
+ <translation>Lưu ý: Thay đổi ngôn ngữ sẽ áp dụng thiết lập của bạn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="43"/>
+ <source>Interface language:</source>
+ <translation>Ngôn ngữ giao diện:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="57"/>
+ <source>Theme:</source>
+ <translation>Giao diện:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="74"/>
+ <source>Game List</source>
+ <translation>Danh sách trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="82"/>
+ <source>Show Add-Ons Column</source>
+ <translation>Hiện thị cột Tiện ích ngoài</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="91"/>
+ <source>Game Icon Size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="105"/>
+ <source>Folder Icon Size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="119"/>
+ <source>Row 1 Text:</source>
+ <translation>Dòng chữ hàng 1:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="133"/>
+ <source>Row 2 Text:</source>
+ <translation>Dòng chữ hàng 2:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="150"/>
+ <source>Screenshots</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="158"/>
+ <source>Ask Where To Save Screenshots (Windows Only)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="167"/>
+ <source>Screenshots Path: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.ui" line="177"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="93"/>
+ <source>Select Screenshots Path...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="173"/>
+ <source>&lt;System&gt;</source>
+ <translation>&lt;System&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_ui.cpp" line="174"/>
+ <source>English</source>
+ <translation>Tiếng Việt</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigureVibration</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="14"/>
+ <source>Configure Vibration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
+ <source>Vibration</source>
+ <translation>Độ rung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
+ <source>Player 1</source>
+ <translation>Người chơi 1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
+ <source>%</source>
+ <translation>%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
+ <source>Player 2</source>
+ <translation>Người chơi 2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
+ <source>Player 3</source>
+ <translation>Người chơi 3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
+ <source>Player 4</source>
+ <translation>Người chơi 4</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
+ <source>Player 5</source>
+ <translation>Người chơi 5</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
+ <source>Player 6</source>
+ <translation>Người chơi 6</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
+ <source>Player 7</source>
+ <translation>Người chơi 7</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
+ <source>Player 8</source>
+ <translation>Người chơi 8</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
+ <source>Enable Accurate Vibration</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ConfigureWeb</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="14"/>
+ <source>Form</source>
+ <translation>Mẫu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="17"/>
+ <source>Web</source>
+ <translation>Web</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="25"/>
+ <source>yuzu Web Service</source>
+ <translation>Dịch vụ Web yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="31"/>
+ <source>By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information.</source>
+ <translation>Bằng cách cung cấp tên đăng nhập và mã thông báo của bạn, bạn đã chấp thuận sẽ cho phép yuzu thu thập dữ liệu đã sử dụng, trong đó có thể có thông tin nhận dạng người dùng.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="49"/>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="155"/>
+ <source>Verify</source>
+ <translation>Xác nhận</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="56"/>
+ <source>Sign up</source>
+ <translation>Đăng ký</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="66"/>
+ <source>Token: </source>
+ <translation>Token:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="76"/>
+ <source>Username: </source>
+ <translation>Tên người dùng: </translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="93"/>
+ <source>What is my token?</source>
+ <translation>Token của tôi là gì?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="118"/>
+ <source>Telemetry</source>
+ <translation>Viễn trắc</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="124"/>
+ <source>Share anonymous usage data with the yuzu team</source>
+ <translation>Chia sẽ dữ liệu sử dụng ẩn danh với nhóm yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="131"/>
+ <source>Learn more</source>
+ <translation>Tìm hiểu thêm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="140"/>
+ <source>Telemetry ID:</source>
+ <translation>ID Viễn trắc: </translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="156"/>
+ <source>Regenerate</source>
+ <translation>Tạo mới</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="170"/>
+ <source>Discord Presence</source>
+ <translation>Hiện diện trên Discord</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.ui" line="176"/>
+ <source>Show Current Game in your Discord Status</source>
+ <translation>Hiển thị trò chơi hiện tại lên thông tin Discord của bạn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="69"/>
+ <source>&lt;a href=&apos;https://yuzu-emu.org/help/feature/telemetry/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn more&lt;/span&gt;&lt;/a&gt;</source>
+ <translation>&lt;a href=&apos;https://yuzu-emu.org/help/feature/telemetry/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tìm hiểu thêm&lt;/span&gt;&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="73"/>
+ <source>&lt;a href=&apos;https://profile.yuzu-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Sign up&lt;/span&gt;&lt;/a&gt;</source>
+ <translation>&lt;a href=&apos;https://profile.yuzu-emu.org/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Đăng ký&lt;/span&gt;&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="77"/>
+ <source>&lt;a href=&apos;https://yuzu-emu.org/wiki/yuzu-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;What is my token?&lt;/span&gt;&lt;/a&gt;</source>
+ <translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/yuzu-web-service/&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Mã thông báo của tôi là gì?&lt;/span&gt;&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="81"/>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="126"/>
+ <source>Telemetry ID: 0x%1</source>
+ <translation>ID Viễn trắc: 0x%1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="166"/>
+ <source>Unspecified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="118"/>
+ <source>Token not verified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="119"/>
+ <source>Token was not verified. The change to your token has not been saved.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="145"/>
+ <source>Verifying...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="167"/>
+ <source>Verification failed</source>
+ <translation>Xác nhận không thành công</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_web.cpp" line="168"/>
+ <source>Verification failed. Check that you have entered your token correctly, and that your internet connection is working.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>ControllerDialog</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/controller.cpp" line="21"/>
+ <source>Controller P1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/controller.cpp" line="60"/>
+ <source>&amp;Controller P1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>GMainWindow</name>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="180"/>
+ <source>&lt;a href=&apos;https://yuzu-emu.org/help/feature/telemetry/&apos;&gt;Anonymous data is collected&lt;/a&gt; to help improve yuzu. &lt;br/&gt;&lt;br/&gt;Would you like to share your usage data with us?</source>
+ <translation>&lt;a href=&apos;https://yuzu-emu.org/help/feature/telemetry/&apos;&gt;Dữ liệu ẩn danh được thu thập&lt;/a&gt;để hỗ trợ cải thiện yuzu. &lt;br/&gt;&lt;br/&gt;Bạn có muốn chia sẽ dữ liệu sử dụng cho chúng tôi?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="183"/>
+ <source>Telemetry</source>
+ <translation>Viễn trắc</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="603"/>
+ <source>Loading Web Applet...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="650"/>
+ <location filename="../../src/yuzu/main.cpp" line="653"/>
+ <source>Disable Web Applet</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="654"/>
+ <source>Disabling the web applet will cause it to not be shown again for the rest of the emulated session. This can lead to undefined behavior and should only be used with Super Mario 3D All-Stars. Are you sure you want to disable the web applet?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="757"/>
+ <source>The amount of shaders currently being built</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="759"/>
+ <source>The current selected resolution scaling multiplier.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="762"/>
+ <source>Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch.</source>
+ <translation>Tốc độ giả lập hiện tại. Giá trị cao hơn hoặc thấp hơn 100% chỉ ra giả lập sẽ chạy nhanh hơn hoặc chậm hơn trên máy Switch</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="765"/>
+ <source>How many frames per second the game is currently displaying. This will vary from game to game and scene to scene.</source>
+ <translation>Có bao nhiêu khung hình trên mỗi giây mà trò chơi đang hiển thị. Điều này sẽ thay đổi từ giữa các trò chơi và các khung cảnh khác nhau.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="769"/>
+ <source>Time taken to emulate a Switch frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms.</source>
+ <translation>Thời gian mà giả lập lấy từ khung hình Switch, sẽ không kể đến giới hạn khung hình hoặc v-sync. Đối với tốc độ tối đa mà giả lập nhận được nhiều nhất là ở độ khoảng 16.67 ms.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
+ <source>DOCK</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
+ <source>VULKAN</source>
+ <translation>VULKAN</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
+ <source>OPENGL</source>
+ <translation>OPENGL</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
+ <source>&amp;Clear Recent Files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
+ <source>&amp;Continue</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Tạm dừng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
+ <source>yuzu is running a game</source>
+ <extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
+ <source>Warning Outdated Game Format</source>
+ <translation>Chú ý định dạng trò chơi đã lỗi thời</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
+ <source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
+ <translation>Bạn đang sử dụng định dạng danh mục ROM giải mã cho trò chơi này, và đó là một định dạng lỗi thời đã được thay thế bởi những thứ khác như NCA, NAX, XCI, hoặc NSP. Danh mục ROM giải mã có thể thiếu các icon, metadata, và hỗ trợ cập nhật.&lt;br&gt;&lt;br&gt;Để hiểu thêm về các định dạng khác nhau của Switch mà yuzu hỗ trợ, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;vui lòng kiểm tra trên wiki của chúng tôi&lt;/a&gt;. Thông báo này sẽ không hiển thị lại lần sau.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
+ <source>Error while loading ROM!</source>
+ <translation>Lỗi xảy ra khi nạp ROM!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
+ <source>The ROM format is not supported.</source>
+ <translation>Định dạng ROM này không hỗ trợ.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
+ <source>An error occurred initializing the video core.</source>
+ <translation>Đã xảy ra lỗi khi khởi tạo lõi đồ hoạ.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
+ <source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
+ <source>Error while loading ROM! %1</source>
+ <comment>%1 signifies a numeric error code.</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
+ <source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
+ <comment>%1 signifies an error string.</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
+ <source>An unknown error occurred. Please see the log for more details.</source>
+ <translation>Đã xảy ra lỗi không xác định. Hãy kiểm tra phần báo cáo để biết thêm chi tiết.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
+ <source>(64-bit)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
+ <source>(32-bit)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
+ <source>%1 %2</source>
+ <comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
+ <source>Save Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
+ <source>Mod Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
+ <source>Error Opening %1 Folder</source>
+ <translation>Xảy ra lỗi khi mở %1 thư mục</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
+ <source>Folder does not exist!</source>
+ <translation>Thư mục này không tồn tại!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
+ <source>Error Opening Transferable Shader Cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
+ <source>Failed to create the shader cache directory for this title.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
+ <source>Contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
+ <source>Update</source>
+ <translation>Cập nhật</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
+ <source>DLC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
+ <source>Remove Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
+ <source>Remove Installed Game %1?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
+ <source>Successfully Removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
+ <source>Successfully removed the installed base game.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
+ <source>Error Removing %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <source>The base game is not installed in the NAND and cannot be removed.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
+ <source>Successfully removed the installed update.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
+ <source>There is no update installed for this title.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
+ <source>There are no DLC installed for this title.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
+ <source>Successfully removed %1 installed DLC.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
+ <source>Delete OpenGL Transferable Shader Cache?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
+ <source>Delete Vulkan Transferable Shader Cache?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
+ <source>Delete All Transferable Shader Caches?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
+ <source>Remove Custom Game Configuration?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
+ <source>Remove File</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
+ <source>Error Removing Transferable Shader Cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
+ <source>A shader cache for this title does not exist.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
+ <source>Successfully removed the transferable shader cache.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
+ <source>Failed to remove the transferable shader cache.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
+ <source>Error Removing Transferable Shader Caches</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
+ <source>Successfully removed the transferable shader caches.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
+ <source>Failed to remove the transferable shader cache directory.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
+ <source>Error Removing Custom Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <source>A custom configuration for this title does not exist.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
+ <source>Successfully removed the custom game configuration.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
+ <source>Failed to remove the custom game configuration.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
+ <source>RomFS Extraction Failed!</source>
+ <translation>Khai thác RomFS không thành công!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
+ <source>There was an error copying the RomFS files or the user cancelled the operation.</source>
+ <translation>Đã xảy ra lỗi khi sao chép tệp tin RomFS hoặc người dùng đã hủy bỏ hoạt động này.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
+ <source>Full</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
+ <source>Skeleton</source>
+ <translation>Sườn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
+ <source>Select RomFS Dump Mode</source>
+ <translation>Chọn chế độ kết xuất RomFS</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
+ <source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
+ <translation>Vui lòng chọn cách mà bạn muốn RomFS kết xuất.&lt;br&gt;Chế độ Đầy Đủ sẽ sao chép toàn bộ tệp tin vào một danh mục mới trong khi &lt;br&gt;chế độ Sườn chỉ tạo kết cấu danh mục.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
+ <source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <source>Extracting RomFS...</source>
+ <translation>Khai thác RomFS...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
+ <source>Cancel</source>
+ <translation>Hủy bỏ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <source>RomFS Extraction Succeeded!</source>
+ <translation>Khai thác RomFS thành công!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
+ <source>The operation completed successfully.</source>
+ <translation>Các hoạt động đã hoàn tất thành công.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
+ <source>Error Opening %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
+ <source>Select Directory</source>
+ <translation>Chọn danh mục</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <source>Properties</source>
+ <translation>Thuộc tính</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
+ <source>The game properties could not be loaded.</source>
+ <translation>Không thể tải thuộc tính của trò chơi.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
+ <source>Switch Executable (%1);;All Files (*.*)</source>
+ <comment>%1 is an identifier for the Switch executable file extensions.</comment>
+ <translation>Thực thi Switch (%1);;Tất cả tệp tin (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
+ <source>Load File</source>
+ <translation>Nạp tệp tin</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <source>Open Extracted ROM Directory</source>
+ <translation>Mở danh mục ROM đã trích xuất</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
+ <source>Invalid Directory Selected</source>
+ <translation>Danh mục đã chọn không hợp lệ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
+ <source>The directory you have selected does not contain a &apos;main&apos; file.</source>
+ <translation>Danh mục mà bạn đã chọn không có chứa tệp tin &apos;main&apos;.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
+ <translation>Những tệp tin Switch cài được (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
+ <source>Install Files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
+ <source>%n file(s) remaining</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
+ <source>Installing file &quot;%1&quot;...</source>
+ <translation>Đang cài đặt tệp tin &quot;%1&quot;...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
+ <source>Install Results</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
+ <source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
+Please, only use this feature to install updates and DLC.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
+ <source>%n file(s) were newly installed
+</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
+ <source>%n file(s) were overwritten
+</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
+ <source>%n file(s) failed to install
+</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
+ <source>System Application</source>
+ <translation>Ứng dụng hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
+ <source>System Archive</source>
+ <translation>Hệ thống lưu trữ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
+ <source>System Application Update</source>
+ <translation>Cập nhật hệ thống ứng dụng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
+ <source>Firmware Package (Type A)</source>
+ <translation>Gói phần mềm hệ thống (Loại A)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
+ <source>Firmware Package (Type B)</source>
+ <translation>Gói phần mềm (Loại B)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
+ <source>Game</source>
+ <translation>Trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
+ <source>Game Update</source>
+ <translation>Cập nhật trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
+ <source>Game DLC</source>
+ <translation>Nội dung trò chơi có thể tải xuống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
+ <source>Delta Title</source>
+ <translation>Tiêu đề Delta</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
+ <source>Select NCA Install Type...</source>
+ <translation>Chọn cách cài đặt NCA...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
+ <source>Please select the type of title you would like to install this NCA as:
+(In most instances, the default &apos;Game&apos; is fine.)</source>
+ <translation>Vui lòng chọn loại tiêu đề mà bạn muốn cài đặt NCA này:
+(Trong hầu hết trường hợp, chọn mặc định &apos;Game&apos; là tốt nhất.)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
+ <source>Failed to Install</source>
+ <translation>Cài đặt đã không thành công</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
+ <source>The title type you selected for the NCA is invalid.</source>
+ <translation>Loại tiêu đề NCA mà bạn chọn nó không hợp lệ.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <source>File not found</source>
+ <translation>Không tìm thấy tệp tin</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
+ <source>File &quot;%1&quot; not found</source>
+ <translation>Không tìm thấy tệp tin &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
+ <source>Missing yuzu Account</source>
+ <translation>Thiếu tài khoản yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
+ <source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
+ <translation>Để gửi trường hợp thử nghiệm trò chơi tương thích, bạn phải liên kết tài khoản yuzu.&lt;br&gt;&lt;br/&gt;Để liên kết tải khoản yuzu của bạn, hãy đến Giả lập &amp;gt; Thiết lập &amp;gt; Web.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
+ <source>Error opening URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
+ <source>Unable to open the URL &quot;%1&quot;.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
+ <source>TAS Recording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
+ <source>Overwrite file of player 1?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
+ <source>Amiibo File (%1);; All Files (*.*)</source>
+ <translation>Tệp tin Amiibo (%1);; Tất cả tệp tin (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <source>Load Amiibo</source>
+ <translation>Nạp dữ liệu Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
+ <source>Error opening Amiibo data file</source>
+ <translation>Xảy ra lỗi khi mở dữ liệu tệp tin Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
+ <source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
+ <translation>Không thể mở tệp tin Amiibo &quot;%1&quot; để đọc.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
+ <source>Error reading Amiibo data file</source>
+ <translation>Xảy ra lỗi khi đọc dữ liệu tệp tin Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
+ <source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
+ <translation>Hoàn toàn không thể đọc được dữ liệu Amiibo. Dự kiến byte sẽ đọc là %1, nhưng byte chỉ có thể đọc là %2.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
+ <source>Error loading Amiibo data</source>
+ <translation>Xảy ra lỗi khi nạp dữ liệu Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
+ <source>Unable to load Amiibo data.</source>
+ <translation>Không thể nạp dữ liệu Amiibo.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
+ <source>Capture Screenshot</source>
+ <translation>Chụp ảnh màn hình</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
+ <source>PNG Image (*.png)</source>
+ <translation>Hình ảnh PNG (*.png)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
+ <source>TAS state: Running %1/%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
+ <source>TAS state: Recording %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
+ <source>TAS state: Idle %1/%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
+ <source>TAS State: Invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
+ <source>&amp;Stop Running</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
+ <source>&amp;Start</source>
+ <translation>&amp;Bắt đầu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <source>Stop R&amp;ecording</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <source>R&amp;ecord</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
+ <source>Building: %n shader(s)</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
+ <source>Scale: %1x</source>
+ <comment>%1 is the resolution scaling factor</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
+ <source>Speed: %1% / %2%</source>
+ <translation>Tốc độ: %1% / %2%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
+ <source>Speed: %1%</source>
+ <translation>Tốc độ: %1%</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <source>Game: %1 FPS (Unlocked)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
+ <source>Game: %1 FPS</source>
+ <translation>Trò chơi: %1 FPS</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
+ <source>Frame: %1 ms</source>
+ <translation>Khung hình: %1 ms</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
+ <source>GPU NORMAL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
+ <source>GPU HIGH</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
+ <source>GPU EXTREME</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
+ <source>GPU ERROR</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
+ <source>NEAREST</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
+ <source>BILINEAR</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
+ <source>BICUBIC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
+ <source>GAUSSIAN</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
+ <source>SCALEFORCE</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
+ <source>FSR</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
+ <source>NO AA</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
+ <source>FXAA</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
+ <source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
+ <translation>Trò chơi bạn muốn chạy yêu cầu một số tệp tin được sao chép từ thiết từ máy Switch của bạn trước khi bắt đầu chơi.&lt;br/&gt;&lt;br/&gt;Để biết thêm thông tin về cách sao chép những tệp tin đó, vui lòng tham khảo những wiki sau: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Sao chép dữ liệu hệ thống và font dùng chung từ máy Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Bạn có muốn trở về danh sách trò chơi? Nếu bạn vẫn tiếp tục thì trò chơi có thể gặp sự cố, dữ liệu lưu tiến trình có thể bị lỗi, hoặc bạn sẽ gặp những lỗi khác.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
+ <source>yuzu was unable to locate a Switch system archive. %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
+ <source>yuzu was unable to locate a Switch system archive: %1. %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
+ <source>System Archive Not Found</source>
+ <translation>Không tìm thấy tệp tin hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
+ <source>System Archive Missing</source>
+ <translation>Bị thiếu tệp tin hệ thống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
+ <source>yuzu was unable to locate the Switch shared fonts. %1</source>
+ <translation>yuzu không thể tìm thấy vị trí font dùng chung của Switch. %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
+ <source>Shared Fonts Not Found</source>
+ <translation>Không tìm thấy font dùng chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
+ <source>Shared Font Missing</source>
+ <translation>Bị thiếu font dùng chung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
+ <source>Fatal Error</source>
+ <translation>Lỗi nghiêm trọng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
+ <source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
+ <translation>yuzu đã xảy ra lỗi nghiêm trọng, vui lòng kiểm tra sổ ghi chép để biết thêm chi tiết. Để biết thêm thông tin về cách truy cập sổ ghi chép, vui lòng xem trang sau: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Làm sao để tải tệp tin sổ ghi chép lên&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Bạn có muốn trở về danh sách game? Tiếp tục có thể khiến giả lập gặp sự cố, gây hỏng dữ liệu đã lưu, hoặc gây các lỗi khác.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
+ <source>Fatal Error encountered</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <source>Confirm Key Rederivation</source>
+ <translation>Xác nhận mã khóa Rederivation</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <source>You are about to force rederive all of your keys.
+If you do not know what this means or what you are doing,
+this is a potentially destructive action.
+Please make sure this is what you want
+and optionally make backups.
+
+This will delete your autogenerated key files and re-run the key derivation module.</source>
+ <translation>Bạn đang muốn bắt buộc trích dẫn lại toàn bộ mã khóa của bạn.
+Nếu bạn không biết cái này là gì hay bạn đang làm gì,
+đây là hành động có khả năng phá hoại.
+Hãy chắc rằng đây là điều bạn muốn
+và phải tạo ra một bản sao lưu lại.
+
+Điều này sẽ xóa mã khóa tự động tạo trên tệp tin của bạn và chạy lại mô-đun chiết xuất mã khoá.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
+ <source>Missing fuses</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
+ <source> - Missing BOOT0</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
+ <source> - Missing BCPKG2-1-Normal-Main</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
+ <source> - Missing PRODINFO</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
+ <source>Derivation Components Missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
+ <source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
+ <source>Deriving keys...
+This may take up to a minute depending
+on your system&apos;s performance.</source>
+ <translation>Đang lấy mã khoá...
+Điều này sẽ mất tới một phút tuỳ vào
+hệ thống của bạn.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <source>Deriving Keys</source>
+ <translation>Mã khóa xuất phát</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
+ <source>Select RomFS Dump Target</source>
+ <translation>Chọn thư mục để sao chép RomFS</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
+ <source>Please select which RomFS you would like to dump.</source>
+ <translation>Vui lòng chọn RomFS mà bạn muốn chiết xuất.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
+ <source>Are you sure you want to close yuzu?</source>
+ <translation>Bạn có chắc chắn muốn đóng yuzu?</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
+ <source>yuzu</source>
+ <translation>yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
+ <source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
+ <translation>Bạn có chắc rằng muốn dừng giả lập? Bất kì tiến trình nào chưa được lưu sẽ bị mất.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
+ <source>The currently running application has requested yuzu to not exit.
+
+Would you like to bypass this and exit anyway?</source>
+ <translation>Chương trình đang chạy đã yêu cầu yuzu không được thoát.
+
+Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không?</translation>
+ </message>
+</context>
+<context>
+ <name>GRenderWindow</name>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="976"/>
+ <source>OpenGL not available!</source>
+ <translation>Không có sẵn OpenGL!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="977"/>
+ <source>yuzu has not been compiled with OpenGL support.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="996"/>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="1016"/>
+ <source>Error while initializing OpenGL!</source>
+ <translation>Đã xảy ra lỗi khi khởi tạo OpenGL!</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="997"/>
+ <source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="1006"/>
+ <source>Error while initializing OpenGL 4.6!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="1007"/>
+ <source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.&lt;br&gt;&lt;br&gt;GL Renderer:&lt;br&gt;%1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/bootmanager.cpp" line="1017"/>
+ <source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.&lt;br&gt;&lt;br&gt;GL Renderer:&lt;br&gt;%1&lt;br&gt;&lt;br&gt;Unsupported extensions:&lt;br&gt;%2</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>GameList</name>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="337"/>
+ <source>Name</source>
+ <translation>Tên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="338"/>
+ <source>Compatibility</source>
+ <translation>Độ tương thích</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="340"/>
+ <source>Add-ons</source>
+ <translation>Tiện ích ngoài</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="342"/>
+ <source>File type</source>
+ <translation>Loại tệp tin</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="343"/>
+ <source>Size</source>
+ <translation>Kích cỡ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="535"/>
+ <source>Favorite</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="537"/>
+ <source>Start Game</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="539"/>
+ <source>Start Game without Custom Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="541"/>
+ <source>Open Save Data Location</source>
+ <translation>Mở vị trí dữ liệu lưu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="542"/>
+ <source>Open Mod Data Location</source>
+ <translation>Mở vị trí chỉnh sửa dữ liệu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="544"/>
+ <source>Open Transferable Pipeline Cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="546"/>
+ <source>Remove</source>
+ <translation>Gỡ Bỏ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="547"/>
+ <source>Remove Installed Update</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="548"/>
+ <source>Remove All Installed DLC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="549"/>
+ <source>Remove Custom Configuration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="550"/>
+ <source>Remove OpenGL Pipeline Cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="551"/>
+ <source>Remove Vulkan Pipeline Cache</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="553"/>
+ <source>Remove All Pipeline Caches</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="554"/>
+ <source>Remove All Installed Contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="555"/>
+ <location filename="../../src/yuzu/game_list.cpp" line="556"/>
+ <source>Dump RomFS</source>
+ <translation>Kết xuất RomFS</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="557"/>
+ <source>Dump RomFS to SDMC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="558"/>
+ <source>Copy Title ID to Clipboard</source>
+ <translation>Sao chép ID tiêu đề vào bộ nhớ tạm</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="559"/>
+ <source>Navigate to GameDB entry</source>
+ <translation>Điều hướng đến mục cơ sở dữ liệu trò chơi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="561"/>
+ <source>Properties</source>
+ <translation>Thuộc tính</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="633"/>
+ <source>Scan Subfolders</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="634"/>
+ <source>Remove Game Directory</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="653"/>
+ <source>▲ Move Up</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="654"/>
+ <source>▼ Move Down</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="655"/>
+ <source>Open Directory Location</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="700"/>
+ <source>Clear</source>
+ <translation>Bỏ trống</translation>
+ </message>
+</context>
+<context>
+ <name>GameListItemCompat</name>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="151"/>
+ <source>Perfect</source>
+ <translation>Tốt nhất</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="151"/>
+ <source>Game functions flawless with no audio or graphical glitches, all tested functionality works as intended without
+any workarounds needed.</source>
+ <translation>Game chạy rất tốt, không lỗi về âm thanh và đồ hoạ, mọi chức năng của game được thử thì hoạt động như dự kiến mà không cần
+bất kì tinh chỉnh nào.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="152"/>
+ <source>Great</source>
+ <translation>Tốt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="152"/>
+ <source>Game functions with minor graphical or audio glitches and is playable from start to finish. May require some
+workarounds.</source>
+ <translation>Có thể chơi từ đầu đến cuối nhưng vẫn có một số lỗi nhỏ về đồ họa hoặc âm thanh. Có thể sẽ cần tới một vài tinh chỉnh nào đó.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="153"/>
+ <source>Okay</source>
+ <translation>Tạm ổn</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="153"/>
+ <source>Game functions with major graphical or audio glitches, but game is playable from start to finish with
+workarounds.</source>
+ <translation>Game chạy nhưng với rất nhiều lỗi đồ hoạ và âm thanh, tuy nhiên có thể chơi từ đầu đến cuối với
+một số tinh chỉnh.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="154"/>
+ <source>Bad</source>
+ <translation>Không tốt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="154"/>
+ <source>Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches
+even with workarounds.</source>
+ <translation>Game chạy được, tuy nhiên với nhiều lỗi về đồ hoạ và âm thanh. Không thể tiếp tục ở một số khu vực trong game kể cả với tinh chỉnh.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="155"/>
+ <source>Intro/Menu</source>
+ <translation>Phần mở đầu/Menu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="155"/>
+ <source>Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start
+Screen.</source>
+ <translation>Hoàn toàn không thể chơi được do có nhiều lỗi đồ họa hoặc âm thanh. Không thể chơi tiếp sau khi bấm nút bắt đầu trò chơi.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="156"/>
+ <source>Won&apos;t Boot</source>
+ <translation>Không khởi động</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="156"/>
+ <source>The game crashes when attempting to startup.</source>
+ <translation>Trò chơi sẽ thoát đột ngột khi khởi động.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="157"/>
+ <source>Not Tested</source>
+ <translation>Chưa ai thử</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="157"/>
+ <source>The game has not yet been tested.</source>
+ <translation>Trò chơi này chưa có ai thử cả.</translation>
+ </message>
+</context>
+<context>
+ <name>GameListPlaceholder</name>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="873"/>
+ <source>Double-click to add a new folder to the game list</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>GameListSearchField</name>
+ <message numerus="yes">
+ <location filename="../../src/yuzu/game_list.cpp" line="87"/>
+ <source>%1 of %n result(s)</source>
+ <translation type="unfinished"><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="130"/>
+ <source>Filter:</source>
+ <translation>Bộ lọc:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list.cpp" line="133"/>
+ <source>Enter pattern to filter</source>
+ <translation>Nhập khuôn để lọc</translation>
+ </message>
+</context>
+<context>
+ <name>InstallDialog</name>
+ <message>
+ <location filename="../../src/yuzu/install_dialog.cpp" line="31"/>
+ <source>Please confirm these are the files you wish to install.</source>
+ <translation>Xin hãy xác nhận đây là những tệp tin bạn muốn cài.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/install_dialog.cpp" line="34"/>
+ <source>Installing an Update or DLC will overwrite the previously installed one.</source>
+ <translation>Cài đặt một tệp tin cập nhật hoặc DLC mới sẽ thay thế những tệp cũ đã cài trước đó.</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/install_dialog.cpp" line="38"/>
+ <source>Install</source>
+ <translation>Cài đặt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/install_dialog.cpp" line="52"/>
+ <source>Install Files to NAND</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LimitableInputDialog</name>
+ <message>
+ <location filename="../../src/yuzu/util/limitable_input_dialog.cpp" line="62"/>
+ <source>The text can't contain any of the following characters:
+%1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>LoadingScreen</name>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.ui" line="84"/>
+ <source>Loading Shaders 387 / 1628</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.ui" line="121"/>
+ <source>Loading Shaders %v out of %m</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.ui" line="135"/>
+ <source>Estimated Time 5m 4s</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.cpp" line="91"/>
+ <source>Loading...</source>
+ <translation>Đang tải...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.cpp" line="92"/>
+ <source>Loading Shaders %1 / %2</source>
+ <translation>Đang nạp shader %1 / %2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.cpp" line="93"/>
+ <source>Launching...</source>
+ <translation>Đang mở...</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/loading_screen.cpp" line="174"/>
+ <source>Estimated Time %1</source>
+ <translation>Ước tính thời gian %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="14"/>
+ <source>yuzu</source>
+ <translation>yuzu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="44"/>
+ <source>&amp;File</source>
+ <translation>&amp;Tệp</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="48"/>
+ <source>&amp;Recent Files</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="67"/>
+ <source>&amp;Emulation</source>
+ <translation>&amp;Giả lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="78"/>
+ <source>&amp;View</source>
+ <translation>&amp;Xem</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="82"/>
+ <source>&amp;Reset Window Size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="87"/>
+ <source>&amp;Debugging</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="92"/>
+ <source>Reset Window Size to &amp;720p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="95"/>
+ <source>Reset Window Size to 720p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="100"/>
+ <source>Reset Window Size to &amp;900p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="103"/>
+ <source>Reset Window Size to 900p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="108"/>
+ <source>Reset Window Size to &amp;1080p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="111"/>
+ <source>Reset Window Size to 1080p</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="125"/>
+ <source>&amp;Tools</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="129"/>
+ <source>&amp;TAS</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="144"/>
+ <source>&amp;Help</source>
+ <translation>&amp;Trợ giúp</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="164"/>
+ <source>&amp;Install Files to NAND...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="169"/>
+ <source>L&amp;oad File...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="174"/>
+ <source>Load &amp;Folder...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="179"/>
+ <source>E&amp;xit</source>
+ <translation>Th&amp;oát</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="187"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Tạm dừng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="195"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Dừng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="200"/>
+ <source>&amp;Reinitialize keys...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="205"/>
+ <source>&amp;About yuzu</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="213"/>
+ <source>Single &amp;Window Mode</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="218"/>
+ <source>Con&amp;figure...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="226"/>
+ <source>Display D&amp;ock Widget Headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="234"/>
+ <source>Show &amp;Filter Bar</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="242"/>
+ <source>Show &amp;Status Bar</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="245"/>
+ <source>Show Status Bar</source>
+ <translation>Hiển thị thanh trạng thái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="253"/>
+ <source>F&amp;ullscreen</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="261"/>
+ <source>&amp;Restart</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="269"/>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="277"/>
+ <source>&amp;Report Compatibility</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="285"/>
+ <source>Open &amp;Mods Page</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="290"/>
+ <source>Open &amp;Quickstart Guide</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="295"/>
+ <source>&amp;FAQ</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="300"/>
+ <source>Open &amp;yuzu Folder</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="308"/>
+ <source>&amp;Capture Screenshot</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="313"/>
+ <source>&amp;Configure TAS...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="321"/>
+ <source>Configure C&amp;urrent Game...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="329"/>
+ <source>&amp;Start</source>
+ <translation>&amp;Bắt đầu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="337"/>
+ <source>&amp;Reset</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.ui" line="345"/>
+ <source>R&amp;ecord</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MicroProfileDialog</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/profiler.cpp" line="51"/>
+ <source>&amp;MicroProfile</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OverlayDialog</name>
+ <message>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="14"/>
+ <source>Dialog</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="134"/>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="353"/>
+ <source>Cancel</source>
+ <translation>Hủy bỏ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="152"/>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="371"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/util/overlay_dialog.ui" line="313"/>
+ <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PlayerControlPreview</name>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
+ <source>START/PAUSE</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="244"/>
+ <source>Installed SD Titles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="252"/>
+ <source>Installed NAND Titles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="260"/>
+ <source>System Titles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="303"/>
+ <source>Add New Game Directory</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/game_list_p.h" line="326"/>
+ <source>Favorites</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="23"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="43"/>
+ <source>Shift</source>
+ <translation>Shift</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="25"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="45"/>
+ <source>Ctrl</source>
+ <translation>Ctrl</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="27"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="47"/>
+ <source>Alt</source>
+ <translation>Alt</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
+ <source>[not set]</source>
+ <translation>[chưa đặt nút]</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="49"/>
+ <source>Hat %1 %2</source>
+ <translation>Mũ %1 %2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
+ <source>Axis %1%2</source>
+ <translation>Trục %1%2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="62"/>
+ <source>Button %1</source>
+ <translation>Nút %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
+ <source>[unknown]</source>
+ <translation>[không xác định]</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="58"/>
+ <source>Left</source>
+ <translation>Trái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="60"/>
+ <source>Right</source>
+ <translation>Phải</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="62"/>
+ <source>Down</source>
+ <translation>Xuống</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="64"/>
+ <source>Up</source>
+ <translation>Lên</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="66"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="68"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="70"/>
+ <source>L</source>
+ <translation>L</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="72"/>
+ <source>A</source>
+ <translation>A</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="74"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="76"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="78"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="80"/>
+ <source>Start</source>
+ <translation>Bắt đầu</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="82"/>
+ <source>L1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="84"/>
+ <source>L2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="86"/>
+ <source>L3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="88"/>
+ <source>R1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="90"/>
+ <source>R2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="92"/>
+ <source>R3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="94"/>
+ <source>Circle</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="96"/>
+ <source>Cross</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="98"/>
+ <source>Square</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="100"/>
+ <source>Triangle</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="102"/>
+ <source>Share</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="104"/>
+ <source>Options</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Cảm Ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <source>Wheel</source>
+ <comment>Indicates the mouse wheel</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <source>Backward</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <source>Forward</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <source>Task</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
+ <source>Extra</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
+ <source>[undefined]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <source>%1%2%3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
+ <source>[invalid]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
+ <source>%1%2Hat %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
+ <source>%1%2Axis %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <source>%1%2Axis %3,%4,%5</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
+ <source>%1%2Motion %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
+ <source>%1%2Button %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
+ <source>[unused]</source>
+ <translation>[không sử dụng]</translation>
+ </message>
+</context>
+<context>
+ <name>QtControllerSelectorDialog</name>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="14"/>
+ <source>Controller Applet</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="129"/>
+ <source>Supported Controller Types:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="282"/>
+ <source>Players:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="300"/>
+ <source>1 - 8</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="418"/>
+ <source>P4</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="514"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="711"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="912"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1222"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1459"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1656"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1857"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2054"/>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="416"/>
+ <source>Pro Controller</source>
+ <translation>Tay cầm Pro Controller</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="519"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="716"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="917"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1227"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1464"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1661"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1862"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2059"/>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="420"/>
+ <source>Dual Joycons</source>
+ <translation>Joycon đôi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="524"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="721"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="922"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1232"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1469"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1666"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1867"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2064"/>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="424"/>
+ <source>Left Joycon</source>
+ <translation>Joycon Trái</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="529"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="726"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="927"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1237"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1474"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1671"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1872"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2069"/>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="428"/>
+ <source>Right Joycon</source>
+ <translation>Joycon Phải</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="538"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="735"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="941"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1246"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1483"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1680"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1881"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2078"/>
+ <source>Use Current Config</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="615"/>
+ <source>P2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="812"/>
+ <source>P1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="932"/>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="432"/>
+ <source>Handheld</source>
+ <translation>Cầm tay</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1126"/>
+ <source>P3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1363"/>
+ <source>P7</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1560"/>
+ <source>P8</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1757"/>
+ <source>P5</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="1958"/>
+ <source>P6</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2272"/>
+ <source>Console Mode</source>
+ <translation>Console Mode</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2293"/>
+ <source>Docked</source>
+ <translation>Chế độ cắm TV</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2303"/>
+ <source>Undocked</source>
+ <translation>Chế độ cầm tay</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2313"/>
+ <source>Vibration</source>
+ <translation>Độ rung</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2349"/>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2395"/>
+ <source>Configure</source>
+ <translation>Thiết lập</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2359"/>
+ <source>Motion</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2405"/>
+ <source>Profiles</source>
+ <translation>Hồ Sơ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2432"/>
+ <source>Create</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2467"/>
+ <source>Controllers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2481"/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2508"/>
+ <source>2</source>
+ <translation>2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2518"/>
+ <source>4</source>
+ <translation>4</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2528"/>
+ <source>3</source>
+ <translation>3</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2538"/>
+ <source>Connected</source>
+ <translation>Đã kết nối</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2552"/>
+ <source>5</source>
+ <translation>5</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2569"/>
+ <source>7</source>
+ <translation>7</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2586"/>
+ <source>6</source>
+ <translation>6</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.ui" line="2596"/>
+ <source>8</source>
+ <translation>8</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="436"/>
+ <source>GameCube Controller</source>
+ <translation>Tay cầm GameCube</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="445"/>
+ <source>Poke Ball Plus</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="449"/>
+ <source>NES Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="453"/>
+ <source>SNES Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="457"/>
+ <source>N64 Controller</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_controller.cpp" line="461"/>
+ <source>Sega Genesis</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtErrorDisplay</name>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="21"/>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="34"/>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="49"/>
+ <source>Error Code: %1-%2 (0x%3)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="25"/>
+ <source>An error has occurred.
+Please try again or contact the developer of the software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="38"/>
+ <source>An error occurred on %1 at %2.
+Please try again or contact the developer of the software.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_error.cpp" line="53"/>
+ <source>An error has occurred.
+
+%1
+
+%2</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtProfileSelectionDialog</name>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="23"/>
+ <source>%1
+%2</source>
+ <comment>%1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF))</comment>
+ <translation>%1
+%2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="53"/>
+ <source>Select a user:</source>
+ <translation>Chọn một người dùng:</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="83"/>
+ <source>Users</source>
+ <translation>Người Dùng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_profile_select.cpp" line="122"/>
+ <source>Profile Selector</source>
+ <translation>Chọn hồ sơ</translation>
+ </message>
+</context>
+<context>
+ <name>QtSoftwareKeyboardDialog</name>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.ui" line="14"/>
+ <source>Software Keyboard</source>
+ <translation>Phần mềm bàn phím</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.ui" line="199"/>
+ <source>Enter Text</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.ui" line="479"/>
+ <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.cpp" line="399"/>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.cpp" line="409"/>
+ <source>OK</source>
+ <translation>Chấp nhận</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/applets/qt_software_keyboard.cpp" line="409"/>
+ <source>Cancel</source>
+ <translation>Hủy bỏ</translation>
+ </message>
+</context>
+<context>
+ <name>SequenceDialog</name>
+ <message>
+ <location filename="../../src/yuzu/util/sequence_dialog/sequence_dialog.cpp" line="11"/>
+ <source>Enter a hotkey</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>WaitTreeCallstack</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="150"/>
+ <source>Call stack</source>
+ <translation>Chùm cuộc gọi</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeMutexInfo</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="129"/>
+ <source>waiting for mutex 0x%1</source>
+ <translation>chờ đợi loại trừ lẫn nhau 0x%1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="136"/>
+ <source>has waiters: %1</source>
+ <translation>có chờ đợi: %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="138"/>
+ <source>owner handle: 0x%1</source>
+ <translation>chủ điều khiển: 0x%1</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeObjectList</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="231"/>
+ <source>waiting for all objects</source>
+ <translation>chờ đợi toàn bộ đối tượng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="232"/>
+ <source>waiting for one of the following objects</source>
+ <translation>chờ đợi một đối tượng đang theo dõi</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeSynchronizationObject</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="188"/>
+ <source>[%1] %2 %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="215"/>
+ <source>waited by no thread</source>
+ <translation>chờ đợi bởi vì không có luồng</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeThread</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="253"/>
+ <source>runnable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="255"/>
+ <source>paused</source>
+ <translation>tạm dừng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="261"/>
+ <source>sleeping</source>
+ <translation>ngủ</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="264"/>
+ <source>waiting for IPC reply</source>
+ <translation>đang đợi IPC phản hồi</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="267"/>
+ <source>waiting for objects</source>
+ <translation>đang đợi đối tượng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="270"/>
+ <source>waiting for condition variable</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="273"/>
+ <source>waiting for address arbiter</source>
+ <translation>chờ đợi địa chỉ người đứng giữa</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="276"/>
+ <source>waiting for suspend resume</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="279"/>
+ <source>waiting</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="284"/>
+ <source>initialized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="287"/>
+ <source>terminated</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="290"/>
+ <source>unknown</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="295"/>
+ <source> PC = 0x%1 LR = 0x%2</source>
+ <translation> PC = 0x%1 LR = 0x%2</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="345"/>
+ <source>ideal</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="348"/>
+ <source>core %1</source>
+ <translation>lõi %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="352"/>
+ <source>processor = %1</source>
+ <translation>bộ xử lý = %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="354"/>
+ <source>ideal core = %1</source>
+ <translation>lõi lý tưởng = %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="356"/>
+ <source>affinity mask = %1</source>
+ <translation>che đậy tánh giống nhau = %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="357"/>
+ <source>thread id = %1</source>
+ <translation>id luồng = %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="358"/>
+ <source>priority = %1(current) / %2(normal)</source>
+ <translation>quyền ưu tiên = %1(hiện tại) / %2(bình thường)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="362"/>
+ <source>last running ticks = %1</source>
+ <translation>các tick chạy cuối cùng = %1</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="370"/>
+ <source>not waiting for mutex</source>
+ <translation>không đợi mutex</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeThreadList</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="394"/>
+ <source>waited by thread</source>
+ <translation>đợi vì luồng</translation>
+ </message>
+</context>
+<context>
+ <name>WaitTreeWidget</name>
+ <message>
+ <location filename="../../src/yuzu/debugger/wait_tree.cpp" line="468"/>
+ <source>&amp;Wait Tree</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts
index b204ef2d1..e505ffadc 100644
--- a/dist/languages/vi_VN.ts
+++ b/dist/languages/vi_VN.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>Huỷ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>Hãy chạm vào góc trên cùng&lt;br&gt;bên trái trên touchpad của bạn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>Giờ hãy chạm vào góc dưới cùng&lt;br&gt;bên phải trên touchpad của bạn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>Đã hoàn thành quá trình thiết lập!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -879,49 +879,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>Khôi phục bộ nhớ đệm của metadata</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>Chọn Thư Mục Giả Lập NAND...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>Chọn Thư Mục Giả Lập SD...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>Chọn Thư Mục Chứa Mod...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>Các hoạt động đã hoàn tất thành công.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation type="unfinished"/>
</message>
@@ -982,36 +982,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>Xác nhận thoát trong khi đang chạy giả lập</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>Hiển thị cửa sổ chọn người dùng khi bắt đầu trò chơi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>Tạm dừng giả lập khi chạy nền</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>Ẩn con trỏ chuột khi không dùng</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>Đặt lại mọi tùy chỉnh</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>Quá trình này sẽ thiết lập lại toàn bộ tùy chỉnh và gỡ hết mọi cài đặt cho từng game riêng lẻ. Quá trình này không xóa đường dẫn tới thư mục game, hồ sơ, hay hồ sơ của thiết lập phím. Tiếp tục?</translation>
</message>
@@ -1399,86 +1409,6 @@ p, li { white-space: pre-wrap; }
<translation>[Chờ]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>Trừ</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>Cộng</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation type="unfinished"/>
@@ -1888,7 +1818,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>Cần trái</translation>
</message>
@@ -1982,14 +1912,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2008,7 +1938,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>Cộng</translation>
</message>
@@ -2021,15 +1951,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2086,225 +2016,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>Cần phải</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>Bỏ trống</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[không đặt]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>Chọn một giá trị giữa 0% và 100%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>Thiết lập Cần Điều Khiển</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>Sau khi bấm OK, di chuyển cần sang ngang, rồi sau đó sang dọc.
Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần sang dọc trước, rồi sang ngang.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Tay cầm Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>Joycon đôi</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>Joycon Trái</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>Joycon Phải</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>Cầm tay</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>Tay cầm GameCube</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>Bắt đầu / Tạm ngưng</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C-Stick</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>Lắc!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[Chờ]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>Hồ sơ mới</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>Nhập tên hồ sơ:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>Tạo Hồ Sơ Phím</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>Tên hồ sơ không hợp lệ!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>Quá trình tạo hồ sơ phím &quot;%1&quot; thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>Xóa Hồ Sơ Phím</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>Quá trình xóa hồ sơ phím &quot;%1&quot; thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>Nạp Hồ Sơ Phím</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>Quá trình nạp hồ sơ phím &quot;%1&quot; thất bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>Lưu Hồ Sơ Phím</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>Quá trình lưu hồ sơ phím &quot;%1&quot; thất bại</translation>
</message>
@@ -2352,7 +2287,7 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>Cài đặt</translation>
</message>
@@ -2388,7 +2323,7 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>Thử nghiệm</translation>
</message>
@@ -2403,82 +2338,82 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s
<translation>Xóa Server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Tìm hiểu thêm&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>Cổng có kí tự không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>Cổng phải từ 0 đến 65353</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>Địa chỉ IP không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>Server UDP đã tồn tại</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>Không thể vượt quá 8 server</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>Thử nghiệm</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>Cài đặt</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>Thử Nghiệm Thành Công</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>Nhận được dữ liệu từ server!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>Thử Nghiệm Thất Bại</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>Không thể nhận được dữ liệu hợp lệ từ server. &lt;br&gt;Hãy chắc chắn server được thiết lập chính xác, từ địa chỉ lẫn cổng phải được thiết lập đúng.</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation type="unfinished"/>
</message>
@@ -3389,7 +3324,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[nhấn nút]</translation>
</message>
@@ -3604,68 +3539,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>Độ rung</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>Người chơi 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>Người chơi 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>Người chơi 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>Người chơi 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>Người chơi 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>Người chơi 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>Người chơi 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>Người chơi 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation type="unfinished"/>
</message>
@@ -3873,817 +3813,841 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>Thời gian mà giả lập lấy từ khung hình Switch, sẽ không kể đến giới hạn khung hình hoặc v-sync. Đối với tốc độ tối đa mà giả lập nhận được nhiều nhất là ở độ khoảng 16.67 ms.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;Tạm dừng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>Chú ý định dạng trò chơi đã lỗi thời</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>Bạn đang sử dụng định dạng danh mục ROM giải mã cho trò chơi này, và đó là một định dạng lỗi thời đã được thay thế bởi những thứ khác như NCA, NAX, XCI, hoặc NSP. Danh mục ROM giải mã có thể thiếu biểu tượng, metadata, và hỗ trợ cập nhật.&lt;br&gt;&lt;br&gt;Để giải thích về các định dạng khác nhau của Switch mà yuzu hỗ trợ, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;vui lòng kiểm tra trên wiki của chúng tôi&lt;/a&gt;. Thông báo này sẽ không hiển thị lại lần sau.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>Xảy ra lỗi khi đang nạp ROM!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>Định dạng ROM này không hỗ trợ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>Đã xảy ra lỗi khi khởi tạo lõi video.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>Đã xảy ra lỗi không xác định. Vui lòng kiểm tra sổ ghi chép để biết thêm chi tiết.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>Xảy ra lỗi khi mở %1 thư mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>Thư mục này không tồn tại!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
- <translation type="unfinished"/>
+ <translation>Cập nhật</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>Khai thác RomFS không thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>Đã xảy ra lỗi khi sao chép tệp tin RomFS hoặc người dùng đã hủy bỏ hoạt động này.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
- <translation type="unfinished"/>
+ <translation>Sườn</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>Chọn chế độ kết xuất RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>Vui lòng chọn RomFS mà bạn muốn kết xuất như thế nào.&lt;br&gt;Đầy đủ sẽ sao chép toàn bộ tệp tin vào một danh mục mới trong khi &lt;br&gt;bộ xương chỉ tạo kết cấu danh mục.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>Khai thác RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>Hủy bỏ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>Khai thác RomFS thành công!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>Các hoạt động đã hoàn tất thành công.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>Chọn danh mục</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>Thuộc tính</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>Thuộc tính của trò chơi không thể nạp được.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Thực thi Switch (%1);;Tất cả tệp tin (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>Nạp tệp tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>Mở danh mục ROM đã trích xuất</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>Danh mục đã chọn không hợp lệ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>Danh mục mà bạn đã chọn không có chứa tệp tin &apos;main&apos;.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>Những tệp tin Switch cài được (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>Đang cài đặt tệp tin &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>Hệ thống ứng dụng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>Hệ thống lưu trữ</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>Cập nhật hệ thống ứng dụng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>Gói phần mềm (Loại A)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>Gói phần mềm (Loại B)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>Trò chơi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>Cập nhật trò chơi</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>Nội dung trò chơi có thể tải xuống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Tiêu đề Delta</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>Chọn loại NCA để cài đặt...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>Vui lòng chọn loại tiêu đề mà bạn muốn cài đặt NCA này:
(Trong hầu hết trường hợp, chọn mặc định &apos;Game&apos; là tốt nhất.)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>Cài đặt đã không thành công</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>Loại tiêu đề NCA mà bạn chọn nó không hợp lệ.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>Không tìm thấy tệp tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>Không tìm thấy &quot;%1&quot; tệp tin</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>Thiếu tài khoản yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>Để gửi trường hợp thử nghiệm trò chơi tương thích, bạn phải liên kết tài khoản yuzu.&lt;br&gt;&lt;br/&gt;Để liên kết tải khoản yuzu của bạn, hãy đến Giả lập &amp;gt; Thiết lập &amp;gt; Web.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Tệp tin Amiibo (%1);; Tất cả tệp tin (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>Nạp dữ liệu Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>Xảy ra lỗi khi mở dữ liệu tệp tin Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>Không thể mở tệp tin Amiibo &quot;%1&quot; để đọc.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>Xảy ra lỗi khi đọc dữ liệu tệp tin Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>Hoàn toàn không thể đọc được dữ liệu Amiibo. Dự kiến byte sẽ đọc là %1, nhưng byte chỉ có thể đọc là %2.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>Xảy ra lỗi khi nạp dữ liệu Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>Không thể nạp dữ liệu Amiibo.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>Chụp ảnh màn hình</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>Hình ảnh PNG (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>&amp;Bắt đầu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation type="unfinished"/>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation type="unfinished"><numerusform></numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>Tốc độ: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>Tốc độ: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>Trò chơi: %1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>Khung hình: %1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>Trò chơi bạn muốn chạy yêu cầu một số tệp tin được sao chép từ thiết từ máy Switch của bạn trước khi bắt đầu chơi.&lt;br/&gt;&lt;br/&gt;Để biết thêm thông tin về cách sao chép những tệp tin đó, vui lòng tham khảo những wiki sau: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Sao chép dữ liệu hệ thống và font dùng chung từ máy Switch&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Bạn có muốn trở về danh sách trò chơi? Nếu bạn vẫn tiếp tục thì trò chơi có thể gặp sự cố, dữ liệu lưu tiến trình có thể bị lỗi, hoặc bạn sẽ gặp những lỗi khác.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>Không tìm thấy tệp tin hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>Bị thiếu tệp tin hệ thống</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>yuzu không thể tìm thấy vị trí font dùng chung của Switch. %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>Không tìm thấy font dùng chung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>Bị thiếu font dùng chung</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>Lỗi nghiêm trọng</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu đã xảy ra lỗi nghiêm trọng, vui lòng kiểm tra sổ ghi chép để biết thêm chi tiết. Để biết thêm thông tin về cách truy cập sổ ghi chép, vui lòng xem trang sau: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;Làm sao để tải tệp tin sổ ghi chép lên&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Bạn có muốn trở về danh sách game? Tiếp tục có thể khiến giả lập gặp sự cố, gây hỏng dữ liệu đã lưu, hoặc gây các lỗi khác.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>Xác nhận mã khóa Rederivation</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4700,37 +4664,37 @@ và phải tạo ra một bản sao lưu lại.
Điều này sẽ xóa mã khóa tự động tạo trên tệp tin của bạn và chạy lại mô-đun mã khóa derivation.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4739,39 +4703,39 @@ on your system&apos;s performance.</source>
vào hiệu suất hệ thống của bạn.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>Mã khóa xuất phát</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>Chọn thư mục để sao chép RomFS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>Vui lòng chọn RomFS mà bạn muốn sao chép.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>Bạn có chắc chắn muốn đóng yuzu?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>Bạn có chắc rằng muốn dừng giả lập? Bất kì tiến trình nào chưa được lưu sẽ bị mất.</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5311,7 +5275,7 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
+ <source>Load/Remove &amp;Amiibo...</source>
<translation type="unfinished"/>
</message>
<message>
@@ -5410,15 +5374,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation type="unfinished"/>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation type="unfinished"/>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5467,8 +5426,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[chưa đặt nút]</translation>
</message>
@@ -5479,10 +5438,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Trục %1%2</translation>
</message>
@@ -5493,9 +5452,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[không xác định]</translation>
</message>
@@ -5621,76 +5580,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>Cảm Ứng</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation type="unfinished"/>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[không sử dụng]</translation>
</message>
diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts
index 559e5890b..54a5ff950 100644
--- a/dist/languages/zh_CN.ts
+++ b/dist/languages/zh_CN.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>触摸你的触摸板&lt;br&gt;的左上角。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>触摸你的触摸板&lt;br&gt;的右下角。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>配置完成!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>确定</translation>
</message>
@@ -897,49 +897,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>重置缓存数据</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>选择模拟 NAND 目录...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>选择模拟 SD 卡目录...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>选择游戏卡带路径...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>选择转储目录...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>选择 Mod 载入目录...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>缓存数据已为空。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>操作已成功完成。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>缓存数据删除失败。它可能不存在或正在被使用。</translation>
</message>
@@ -1000,36 +1000,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation>扩展的内存布局 (6GB DRAM)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>在游戏运行时退出需要确认</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>游戏启动时提示选择用户</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>模拟器位于后台时暂停模拟</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation>模拟器位于后台时静音</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>自动隐藏鼠标光标</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>重置所有设置项</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>将重置模拟器所有设置并删除所有游戏的单独设置。这不会删除游戏目录、个人文件及输入配置文件。是否继续?</translation>
</message>
@@ -1417,86 +1427,6 @@ p, li { white-space: pre-wrap; }
<translation>[请按键]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation>Dpad_Left</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation>Dpad_Right</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation>Dpad_Up</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation>Dpad_Down</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation>Left_Stick</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation>Right_Stick</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>+</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>无效</translation>
@@ -1906,7 +1836,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>左摇杆</translation>
</message>
@@ -2000,14 +1930,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2026,7 +1956,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>+</translation>
</message>
@@ -2039,15 +1969,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2104,225 +2034,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>右摇杆</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[未设置]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>切换按键</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>反转按钮</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>体感方向倒置</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>阈值设定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>选择一个介于 0% 和 100% 之间的值</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
<translation>陀螺仪阈值设定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>映射摇杆</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>在按下确定后,首先水平移动你的手柄,然后垂直移动它。
如果要使体感方向倒置,首先垂直移动你的手柄,然后水平移动它。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation>中心轴</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>摇杆死区:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>摇杆灵敏度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro Controller</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>双 Joycons 手柄</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>左 Joycon 手柄</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>右 Joycon 手柄</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>掌机模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>精灵球 PLUS</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>NES 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>SNES 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>N64 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>世嘉创世纪</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>开始 / 暂停</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>控制摇杆</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C 摇杆</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>摇动!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[等待中]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>保存自定义设置</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>输入配置文件名称:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>新建输入配置文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>输入的配置文件名称无效!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>新建输入配置文件 &quot;%1&quot; 失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>删除输入配置文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>删除输入配置文件 &quot;%1&quot; 失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>加载输入配置文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>加载输入配置文件 &quot;%1&quot; 失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>保存输入配置文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>保存输入配置文件 &quot;%1&quot; 失败</translation>
</message>
@@ -2370,7 +2305,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>设置</translation>
</message>
@@ -2406,7 +2341,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>测试</translation>
</message>
@@ -2421,82 +2356,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation>移除服务器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;了解更多&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>端口号中包含无效字符</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>端口必须为 0 到 65353 之间</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>无效的 IP 地址</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>此 UDP 服务器已存在</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>最多只能添加 8 个服务器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>测试中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>配置中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>测试成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>已成功地从服务器获取数据。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>测试失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>无法从服务器获取数据。&lt;br&gt;请验证服务器是否正在运行,以及地址和端口是否配置正确。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP 测试或触摸校准正在进行中。&lt;br&gt;请耐心等待。</translation>
</message>
@@ -3408,7 +3343,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>新名称:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[请按一个键]</translation>
</message>
@@ -3623,68 +3558,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation>按下控制器的任意按键以使控制器震动。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>震动</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>玩家 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>玩家 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>玩家 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>玩家 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>玩家 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>玩家 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>玩家 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>玩家 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>启用精确震动</translation>
</message>
@@ -3892,821 +3832,845 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>在不计算速度限制和垂直同步的情况下,模拟一个 Switch 帧的实际时间。若要进行全速模拟,这个数值不应超过 16.67 毫秒。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>检测到无效配置</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>掌机手柄无法在主机模式中使用。将会选择 Pro controller。</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>主机模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>清除最近文件 (&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>继续 (&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>暂停 (&amp;P)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu 正在运行中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>过时游戏格式警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>目前使用的游戏为解体的 ROM 目录格式,这是一种过时的格式,已被其他格式替代,如 NCA,NAX,XCI 或 NSP。解体的 ROM 目录缺少图标、元数据和更新支持。&lt;br&gt;&lt;br&gt;有关 yuzu 支持的各种 Switch 格式的说明,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;请查看我们的 wiki&lt;/a&gt;。此消息将不会再次出现。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>加载 ROM 时出错!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>该 ROM 格式不受支持。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>在初始化视频核心时发生错误。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu 在运行视频核心时发生错误。这可能是由 GPU 驱动程序过旧造成的。有关详细信息,请参阅日志文件。关于日志文件的更多信息,请参考以下页面:&lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;如何上传日志文件&lt;/a&gt;。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>加载 ROM 时出错! %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;请参考&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 快速导航&lt;/a&gt;以获取相关文件。&lt;br&gt;您可以参考 yuzu 的 wiki 页面&lt;/a&gt;或 Discord 社区&lt;/a&gt;以获得帮助。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>发生了未知错误。请查看日志了解详情。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>保存数据</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>Mod 数据</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>打开 %1 文件夹时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>文件夹不存在!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>打开可转移着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>为该游戏创建着色器缓存目录时失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>目录</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>游戏更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>删除项目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>删除已安装的游戏 %1 ?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>删除成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>成功删除已安装的游戏。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>删除 %1 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>该游戏未安装于 NAND 中,无法删除。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>成功删除已安装的游戏更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>这个游戏没有任何已安装的更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>这个游戏没有任何已安装的 DLC 。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>成功删除游戏 %1 安装的 DLC 。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>删除 OpenGL 模式的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>删除 Vulkan 模式的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>删除所有的着色器缓存?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>移除自定义游戏设置?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>删除文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>删除着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>这个游戏的着色器缓存不存在。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>成功删除着色器缓存。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>删除着色器缓存失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>删除着色器缓存时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>着色器缓存删除成功。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>删除着色器缓存目录失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>移除自定义游戏设置时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>这个游戏的自定义设置不存在。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>成功移除自定义游戏设置。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>移除自定义游戏设置失败。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 提取失败!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>复制 RomFS 文件时出错,或用户取消了操作。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>完整</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>框架</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>选择 RomFS 转储模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>请选择希望 RomFS 转储的方式。&lt;br&gt;“Full” 会将所有文件复制到新目录中,而&lt;br&gt;“Skeleton” 只会创建目录结构。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>%1 没有足够的空间用于提取 RomFS。请保持足够的空间或于模拟—&gt;设置—&gt;系统—&gt;文件系统—&gt;转储根目录中选择一个其他目录。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>正在提取 RomFS...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 提取成功!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>操作成功完成。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>打开 %1 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>选择目录</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>属性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>无法加载该游戏的属性信息。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch 可执行文件 (%1);;所有文件 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>加载文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>打开提取的 ROM 目录</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>选择的目录无效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>选择的目录不包含 “main” 文件。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>可安装的 Switch 文件 (*.nca *.nsp *.xci);;任天堂内容档案 (*.nca);;任天堂应用包 (*.nsp);;NX 卡带镜像 (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>安装文件</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>剩余 %n 个文件</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>正在安装文件 &quot;%1&quot;...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>安装结果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>为了避免可能存在的冲突,我们不建议将游戏本体安装到 NAND 中。
此功能仅用于安装游戏更新和 DLC 。</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>最近安装了 %n 个文件
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n 个文件被覆盖
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n 个文件安装失败
</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>系统应用</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>系统档案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>系统应用更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>固件包 (A型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>固件包 (B型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>游戏</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>游戏更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>游戏 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>差量程序</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>选择 NCA 安装类型...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>请选择此 NCA 的程序类型:
(在大多数情况下,选择默认的“游戏”即可。)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>安装失败</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>选择的 NCA 程序类型无效。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>找不到文件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>文件 &quot;%1&quot; 未找到</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>未设置 yuzu 账户</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>要提交游戏兼容性测试用例,您必须设置您的 yuzu 帐户。&lt;br&gt;&lt;br/&gt;要设置您的 yuzu 帐户,请转到模拟 &amp;gt; 设置 &amp;gt; 网络。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>打开 URL 时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>无法打开 URL : &quot;%1&quot; 。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>TAS 录制</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>覆盖玩家 1 的文件?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>检测到无效配置</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>掌机手柄无法在主机模式中使用。将会选择 Pro controller。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation>当前游戏并没有在寻找 Amiibos</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation>Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation>当前的 Amiibo 已被移除。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 文件 (%1);; 全部文件 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>加载 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>打开 Amiibo 数据文件时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>无法打开 Amiibo 文件 %1。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>读取 Amiibo 数据文件时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>无法完全读取 Amiibo 数据。应读取 %1 个字节,但实际仅能读取 %2 个字节。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>加载 Amiibo 数据时出错</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>无法加载 Amiibo 数据。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>捕获截图</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG 图像 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 状态:正在运行 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS 状态:正在录制 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 状态:空闲 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS 状态:无效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>停止运行 (&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>开始 (&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>停止录制 (&amp;E)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>录制 (&amp;E)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>正在编译 %n 个着色器文件</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>缩放比例: %1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>速度: %1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>速度: %1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>游戏: %1 FPS (未锁定)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>FPS: %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>帧延迟:%1 毫秒</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU NORMAL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU HIGH</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU EXTREME</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU ERROR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>邻近取样</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>双线性过滤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>双三线过滤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>高斯模糊</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>强制缩放</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>抗锯齿关</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>您正尝试启动的游戏需要从 Switch 转储的其他文件。&lt;br/&gt;&lt;br/&gt;有关转储这些文件的更多信息,请参阅以下 wiki 页面:&lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;。&lt;br/&gt;&lt;br/&gt;您要退出并返回至游戏列表吗?继续模拟可能会导致崩溃,存档损坏或其他错误。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>Yuzu 找不到 Switch 系统档案 %1 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>Yuzu 找不到 Switch 系统档案: %1, %2 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>未找到系统档案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>系统档案缺失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>Yuzu 找不到 Swtich 共享字体 %1 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>未找到共享字体</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>共享字体文件缺失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>致命错误</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu 遇到了致命错误,请查看日志了解详情。有关查找日志的更多信息,请参阅以下页面:&lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;。&lt;br/&gt;&lt;br/&gt;您要退出并返回至游戏列表吗?继续模拟可能会导致崩溃,存档损坏或其他错误。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>发生致命错误</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>确认重新生成密钥</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4722,37 +4686,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
这将删除您自动生成的密钥文件并重新运行密钥生成模块。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>项目丢失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- 丢失 BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - 丢失 BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- 丢失 PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>组件丢失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>密钥缺失。&lt;br&gt;请查看&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 快速导航&lt;/a&gt;以获得你的密钥、固件和游戏。&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4761,39 +4725,39 @@ on your system&apos;s performance.</source>
您的系统性能。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>生成密钥</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>选择 RomFS 转储目标</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>请选择希望转储的 RomFS。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>您确定要关闭 yuzu 吗?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>您确定要停止模拟吗?未保存的进度将会丢失。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5334,8 +5298,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>加载 Amiibo... (&amp;A)</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation>加载/移除 Amiibo... (&amp;A)</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5437,15 +5401,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>开始/暂停</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>充电中</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5494,8 +5453,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[未设置]</translation>
</message>
@@ -5506,10 +5465,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>轴 %1%2</translation>
</message>
@@ -5520,9 +5479,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[未知]</translation>
</message>
@@ -5648,76 +5607,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>触摸</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>鼠标滚轮</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>后退</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>前进</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>任务键</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>额外按键</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[未指定]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[无效]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Hat 控制器 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2轴 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2轴 %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2体感 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2按键 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[未使用]</translation>
</message>
diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts
index a01ad329d..1e671bbdc 100644
--- a/dist/languages/zh_TW.ts
+++ b/dist/languages/zh_TW.ts
@@ -62,22 +62,22 @@ p, li { white-space: pre-wrap; }
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="48"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="49"/>
<source>Touch the top left corner &lt;br&gt;of your touchpad.</source>
<translation>觸碰您的觸控板&lt;br&gt;左上角</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="51"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="52"/>
<source>Now touch the bottom right corner &lt;br&gt;of your touchpad.</source>
<translation>接著觸碰您的觸控板&lt;br&gt;右下角</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="54"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="55"/>
<source>Configuration completed!</source>
<translation>設定完成!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="61"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="63"/>
<source>OK</source>
<translation>確定</translation>
</message>
@@ -899,49 +899,49 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_filesystem.ui" line="216"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="124"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="128"/>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="132"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="136"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="141"/>
<source>Reset Metadata Cache</source>
<translation>重設中繼資料快取</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="86"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="94"/>
<source>Select Emulated NAND Directory...</source>
<translation>選擇模擬內部儲存空間資料夾...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="89"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="97"/>
<source>Select Emulated SD Directory...</source>
<translation>選擇模擬 SD 卡資料夾...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="92"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="100"/>
<source>Select Gamecard Path...</source>
<translation>選擇遊戲卡帶路徑...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="95"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="103"/>
<source>Select Dump Directory...</source>
<translation>選擇傾印資料夾...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="98"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="106"/>
<source>Select Mod Load Directory...</source>
<translation>選擇載入模組資料夾...</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="125"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="133"/>
<source>The metadata cache is already empty.</source>
<translation>無中繼資料快取</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="129"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="137"/>
<source>The operation completed successfully.</source>
<translation>動作已成功完成</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="134"/>
+ <location filename="../../src/yuzu/configuration/configure_filesystem.cpp" line="142"/>
<source>The metadata cache couldn&apos;t be deleted. It might be in use or non-existent.</source>
<translation>無法刪除中繼資料快取,可能因為正在使用或不存在。</translation>
</message>
@@ -1002,36 +1002,46 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_general.ui" line="148"/>
+ <source>Extended memory layout (6GB DRAM)</source>
+ <translation>扩展的内存布局 (6GB DRAM)</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
<source>Confirm exit while emulation is running</source>
<translation>退出遊戲時需要確認</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="155"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
<source>Prompt for user on game boot</source>
<translation>啟動遊戲時提示選擇使用者</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="162"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
<source>Pause emulation when in background</source>
<translation>模擬器在背景執行時暫停</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="169"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="176"/>
+ <source>Mute audio when in background</source>
+ <translation>模拟器位于后台时静音</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="183"/>
<source>Hide mouse on inactivity</source>
<translation>滑鼠閒置時自動隱藏</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.ui" line="211"/>
+ <location filename="../../src/yuzu/configuration/configure_general.ui" line="225"/>
<source>Reset All Settings</source>
<translation>重設所有設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="78"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="82"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_general.cpp" line="79"/>
+ <location filename="../../src/yuzu/configuration/configure_general.cpp" line="83"/>
<source>This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed?</source>
<translation>這將重設所有遊戲的額外設定,但不會刪除遊戲資料夾、使用者設定檔、輸入設定檔,是否繼續?</translation>
</message>
@@ -1419,86 +1429,6 @@ p, li { white-space: pre-wrap; }
<translation>[請按按鍵]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="181"/>
- <source>A</source>
- <translation>A</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="184"/>
- <source>B</source>
- <translation>B</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="187"/>
- <source>X</source>
- <translation>X</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="190"/>
- <source>Y</source>
- <translation>Y</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="193"/>
- <source>L</source>
- <translation>L</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="196"/>
- <source>R</source>
- <translation>R</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="199"/>
- <source>ZL</source>
- <translation>ZL</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="202"/>
- <source>ZR</source>
- <translation>ZR</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="205"/>
- <source>Dpad_Left</source>
- <translation>方向鍵 (左)</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="208"/>
- <source>Dpad_Right</source>
- <translation>方向鍵 (右)</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="211"/>
- <source>Dpad_Up</source>
- <translation>方向鍵 (上)</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="214"/>
- <source>Dpad_Down</source>
- <translation>方向鍵 (下)</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="217"/>
- <source>Left_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="220"/>
- <source>Right_Stick</source>
- <translation type="unfinished"/>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="223"/>
- <source>Minus</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="226"/>
- <source>Plus</source>
- <translation>+</translation>
- </message>
- <message>
<location filename="../../src/yuzu/configuration/configure_hotkeys.cpp" line="228"/>
<source>Invalid</source>
<translation>無效</translation>
@@ -1846,7 +1776,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2666"/>
<source>Controller navigation</source>
- <translation type="unfinished"/>
+ <translation>控制器导航</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_advanced.ui" line="2679"/>
@@ -1908,7 +1838,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="291"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1198"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1229"/>
<source>Left Stick</source>
<translation>左搖桿</translation>
</message>
@@ -2002,14 +1932,14 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1251"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1290"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1203"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1234"/>
<source>L</source>
<translation>L</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1306"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1226"/>
<source>ZL</source>
<translation>ZL</translation>
</message>
@@ -2028,7 +1958,7 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1545"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1584"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1225"/>
<source>Plus</source>
<translation>+</translation>
</message>
@@ -2041,15 +1971,15 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1698"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1737"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1197"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1228"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1235"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1753"/>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="1792"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1196"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1227"/>
<source>ZR</source>
<translation>ZR</translation>
</message>
@@ -2106,225 +2036,230 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.ui" line="2516"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1199"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1230"/>
<source>Right Stick</source>
<translation>右搖桿</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="340"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="407"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="483"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="530"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="344"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="411"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="561"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="342"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="409"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="485"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="532"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="346"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="413"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="489"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="563"/>
<source>[not set]</source>
<translation>[未設定]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="345"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="535"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="349"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="566"/>
<source>Toggle button</source>
<translation>切換按鍵</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="351"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="544"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="355"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="575"/>
<source>Invert button</source>
<translation>無效按鈕</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="359"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="487"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="363"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="517"/>
<source>Invert axis</source>
<translation>方向反轉</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="365"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Set threshold</source>
<translation>設定閾值</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="369"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="373"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="420"/>
<source>Choose a value between 0% and 100%</source>
<translation>選擇介於 0% 和 100% 之間的值</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="412"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="416"/>
<source>Set gyro threshold</source>
- <translation type="unfinished"/>
+ <translation>陀螺仪阈值设定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="458"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="462"/>
<source>Map Analog Stick</source>
<translation>搖桿映射</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="459"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="463"/>
<source>After pressing OK, first move your joystick horizontally, and then vertically.
To invert the axes, first move your joystick vertically, and then horizontally.</source>
<translation>按下確定後,先水平再上下移動您的搖桿。
要反轉方向,則先上下再水平移動您的搖桿。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="568"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="923"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="491"/>
+ <source>Center axis</source>
+ <translation>中心轴</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="599"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="954"/>
<source>Deadzone: %1%</source>
<translation>無感帶:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="577"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="928"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="608"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="959"/>
<source>Modifier Range: %1%</source>
<translation>輕推靈敏度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="603"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="953"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="634"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="984"/>
<source>Pro Controller</source>
<translation>Pro 手把</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="957"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="988"/>
<source>Dual Joycons</source>
<translation>雙 Joycon 手把</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="961"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="992"/>
<source>Left Joycon</source>
<translation>左 Joycon 手把</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="965"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="996"/>
<source>Right Joycon</source>
<translation>右 Joycon 手把</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="969"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1000"/>
<source>Handheld</source>
<translation>掌機模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="973"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1004"/>
<source>GameCube Controller</source>
<translation>GameCube 手把</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="982"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1013"/>
<source>Poke Ball Plus</source>
<translation>精靈球 PLUS</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="986"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1017"/>
<source>NES Controller</source>
<translation>NES 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="990"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1021"/>
<source>SNES Controller</source>
<translation>SNES 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="994"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1025"/>
<source>N64 Controller</source>
<translation>N64 控制器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="998"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1029"/>
<source>Sega Genesis</source>
<translation>Mega Drive</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1202"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1233"/>
<source>Start / Pause</source>
<translation>開始 / 暫停</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1205"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1236"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1237"/>
<source>Control Stick</source>
<translation>控制搖桿</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1207"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1238"/>
<source>C-Stick</source>
<translation>C 搖桿</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1305"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1339"/>
<source>Shake!</source>
<translation>搖動!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1307"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1341"/>
<source>[waiting]</source>
<translation>[等待中]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>New Profile</source>
<translation>新增設定檔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1389"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1423"/>
<source>Enter a profile name:</source>
<translation>輸入設定檔名稱:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1397"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1405"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1431"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1439"/>
<source>Create Input Profile</source>
<translation>建立輸入設定檔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1398"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1432"/>
<source>The given profile name is not valid!</source>
<translation>輸入的設定檔名稱無效!</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1406"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1440"/>
<source>Failed to create the input profile &quot;%1&quot;</source>
<translation>建立輸入設定檔「%1」失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1426"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1460"/>
<source>Delete Input Profile</source>
<translation>刪除輸入設定檔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1427"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1461"/>
<source>Failed to delete the input profile &quot;%1&quot;</source>
<translation>刪除輸入設定檔「%1」失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1449"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1483"/>
<source>Load Input Profile</source>
<translation>載入輸入設定檔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1450"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1484"/>
<source>Failed to load the input profile &quot;%1&quot;</source>
<translation>載入輸入設定檔「%1」失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1469"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1503"/>
<source>Save Input Profile</source>
<translation>儲存輸入設定檔</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1470"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1504"/>
<source>Failed to save the input profile &quot;%1&quot;</source>
<translation>儲存輸入設定檔「%1」失敗</translation>
</message>
@@ -2372,7 +2307,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="46"/>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="73"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="245"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="247"/>
<source>Configure</source>
<translation>設定</translation>
</message>
@@ -2408,7 +2343,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_motion_touch.ui" line="201"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="268"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="270"/>
<source>Test</source>
<translation>測試</translation>
</message>
@@ -2423,82 +2358,82 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
<translation>移除伺服器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="91"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="93"/>
<source>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;Learn More&lt;/span&gt;&lt;/a&gt;</source>
<translation>&lt;a href=&apos;https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input&apos;&gt;&lt;span style=&quot;text-decoration: underline; color:#039be5;&quot;&gt;了解更多&lt;/span&gt;&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="171"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="173"/>
<source>%1:%2</source>
<translation>%1:%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="290"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="292"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="176"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="178"/>
<source>Port number has invalid characters</source>
<translation>連線埠中包含無效字元</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="180"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="182"/>
<source>Port has to be in range 0 and 65353</source>
<translation>連線埠必須為 0 到 65353 之間</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="184"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="186"/>
<source>IP address is not valid</source>
<translation>無效的 IP 位址</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="190"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="192"/>
<source>This UDP server already exists</source>
<translation>此 UDP 伺服器已存在</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="196"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="198"/>
<source>Unable to add more than 8 servers</source>
<translation>最多只能新增 8 個伺服器</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="214"/>
<source>Testing</source>
<translation>測試中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="228"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="230"/>
<source>Configuring</source>
<translation>設定中</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="259"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="261"/>
<source>Test Successful</source>
<translation>測試成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="260"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
<source>Successfully received data from the server.</source>
<translation>已成功從伺服器取得資料</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="262"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="264"/>
<source>Test Failed</source>
<translation>測試失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="263"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="265"/>
<source>Could not receive valid data from the server.&lt;br&gt;Please verify that the server is set up correctly and the address and port are correct.</source>
<translation>無法從伺服器取得有效的資料。&lt;br&gt;請檢查伺服器是否正確設定以及位址和連接埠是否正確。</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="291"/>
+ <location filename="../../src/yuzu/configuration/configure_motion_touch.cpp" line="293"/>
<source>UDP Test or calibration configuration is in progress.&lt;br&gt;Please wait for them to finish.</source>
<translation>UDP 測試或觸控校正進行中。&lt;br&gt;請耐心等候。</translation>
</message>
@@ -3410,7 +3345,7 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>新名稱:</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="230"/>
+ <location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="233"/>
<source>[press key]</source>
<translation>[按下按鍵]</translation>
</message>
@@ -3625,68 +3560,73 @@ Drag points to change position, or double-click table cells to edit values.</sou
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_vibration.ui" line="23"/>
+ <source>Press any controller button to vibrate the controller.</source>
+ <translation>按下控制器的任意按键以使控制器震动。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="30"/>
<source>Vibration</source>
<translation>震動</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="56"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="63"/>
<source>Player 1</source>
<translation>玩家 1</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="89"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="141"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="193"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="245"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="315"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="367"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="419"/>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="471"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="96"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="148"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="200"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="252"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="322"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="374"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="426"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="478"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="115"/>
<source>Player 2</source>
<translation>玩家 2</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="160"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="167"/>
<source>Player 3</source>
<translation>玩家 3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="212"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="219"/>
<source>Player 4</source>
<translation>玩家 4</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="282"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="289"/>
<source>Player 5</source>
<translation>玩家 5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="334"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="341"/>
<source>Player 6</source>
<translation>玩家 6</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="386"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="393"/>
<source>Player 7</source>
<translation>玩家 7</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="438"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="445"/>
<source>Player 8</source>
<translation>玩家 8</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="496"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="503"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="502"/>
+ <location filename="../../src/yuzu/configuration/configure_vibration.ui" line="509"/>
<source>Enable Accurate Vibration</source>
<translation>啟用精準震動</translation>
</message>
@@ -3894,820 +3834,844 @@ Drag points to change position, or double-click table cells to edit values.</sou
<translation>在不考慮幀數限制和垂直同步的情況下模擬一個 Switch 畫格的實際時間,若要全速模擬,此數值不得超過 16.67 毫秒。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="844"/>
- <source>Invalid config detected</source>
- <translation>偵測到無效設定</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="845"/>
- <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
- <translation>掌機手把無法在主機模式中使用。將會選擇 Pro 手把。</translation>
- </message>
- <message>
- <location filename="../../src/yuzu/main.cpp" line="857"/>
+ <location filename="../../src/yuzu/main.cpp" line="826"/>
<source>DOCK</source>
<translation>TV 模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>VULKAN</source>
<translation>VULKAN</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="891"/>
+ <location filename="../../src/yuzu/main.cpp" line="845"/>
<source>OPENGL</source>
<translation>OPENGL</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="954"/>
+ <location filename="../../src/yuzu/main.cpp" line="908"/>
<source>&amp;Clear Recent Files</source>
<translation>清除最近的檔案(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1214"/>
+ <location filename="../../src/yuzu/main.cpp" line="1179"/>
<source>&amp;Continue</source>
<translation>繼續(&amp;C)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1216"/>
+ <location filename="../../src/yuzu/main.cpp" line="1181"/>
<source>&amp;Pause</source>
<translation>&amp;暫停</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1257"/>
+ <location filename="../../src/yuzu/main.cpp" line="1222"/>
<source>yuzu is running a game</source>
<extracomment>TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping</extracomment>
<translation>yuzu 正在執行中</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1341"/>
+ <location filename="../../src/yuzu/main.cpp" line="1306"/>
<source>Warning Outdated Game Format</source>
<translation>過時遊戲格式警告</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1342"/>
+ <location filename="../../src/yuzu/main.cpp" line="1307"/>
<source>You are using the deconstructed ROM directory format for this game, which is an outdated format that has been superseded by others such as NCA, NAX, XCI, or NSP. Deconstructed ROM directories lack icons, metadata, and update support.&lt;br&gt;&lt;br&gt;For an explanation of the various Switch formats yuzu supports, &lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;check out our wiki&lt;/a&gt;. This message will not be shown again.</source>
<translation>此遊戲為解構的 ROM 資料夾格式,這是一種過時的格式,已被其他格式取代,如 NCA、NAX、XCI、NSP。解構的 ROM 目錄缺少圖示、中繼資料和更新支援。&lt;br&gt;&lt;br&gt;有關 yuzu 支援的各種 Switch 格式說明,&lt;a href=&apos;https://yuzu-emu.org/wiki/overview-of-switch-game-formats&apos;&gt;請參閱我們的 wiki &lt;/a&gt;。此訊息將不再顯示。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1354"/>
- <location filename="../../src/yuzu/main.cpp" line="1388"/>
+ <location filename="../../src/yuzu/main.cpp" line="1319"/>
+ <location filename="../../src/yuzu/main.cpp" line="1353"/>
<source>Error while loading ROM!</source>
<translation>載入 ROM 時發生錯誤!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1355"/>
+ <location filename="../../src/yuzu/main.cpp" line="1320"/>
<source>The ROM format is not supported.</source>
<translation>此 ROM 格式不支援</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1359"/>
+ <location filename="../../src/yuzu/main.cpp" line="1324"/>
<source>An error occurred initializing the video core.</source>
<translation>初始化視訊核心時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1360"/>
+ <location filename="../../src/yuzu/main.cpp" line="1325"/>
<source>yuzu has encountered an error while running the video core. This is usually caused by outdated GPU drivers, including integrated ones. Please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;How to Upload the Log File&lt;/a&gt;. </source>
<translation>yuzu 在執行視訊核心時發生錯誤。 這可能是 GPU 驅動程序過舊造成的。 詳細資訊請查閱日誌檔案。 關於日誌檔案的更多資訊,請參考以下頁面:&lt;a href=&apos;https://yuzu-emu.org/help/reference/log-files/&apos;&gt;如何上傳日誌檔案&lt;/a&gt;。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1375"/>
+ <location filename="../../src/yuzu/main.cpp" line="1340"/>
<source>Error while loading ROM! %1</source>
<comment>%1 signifies a numeric error code.</comment>
<translation>載入 ROM 時發生錯誤!%1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1378"/>
+ <location filename="../../src/yuzu/main.cpp" line="1343"/>
<source>%1&lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to redump your files.&lt;br&gt;You can refer to the yuzu wiki&lt;/a&gt; or the yuzu Discord&lt;/a&gt; for help.</source>
<comment>%1 signifies an error string.</comment>
<translation>%1&lt;br&gt;請參閱 &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;yuzu 快速指引&lt;/a&gt;以重新傾印檔案。&lt;br&gt;您可以前往 yuzu 的 wiki&lt;/a&gt; 或 Discord 社群&lt;/a&gt;以獲得幫助。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1389"/>
+ <location filename="../../src/yuzu/main.cpp" line="1354"/>
<source>An unknown error occurred. Please see the log for more details.</source>
<translation>發生未知錯誤,請檢視紀錄了解細節。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(64-bit)</source>
<translation>(64-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1513"/>
+ <location filename="../../src/yuzu/main.cpp" line="1478"/>
<source>(32-bit)</source>
<translation>(32-bit)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1514"/>
+ <location filename="../../src/yuzu/main.cpp" line="1479"/>
<source>%1 %2</source>
<comment>%1 is the title name. %2 indicates if the title is 64-bit or 32-bit</comment>
<translation>%1 %2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1661"/>
+ <location filename="../../src/yuzu/main.cpp" line="1626"/>
<source>Save Data</source>
<translation>儲存資料</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1709"/>
+ <location filename="../../src/yuzu/main.cpp" line="1674"/>
<source>Mod Data</source>
<translation>模組資料</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1721"/>
+ <location filename="../../src/yuzu/main.cpp" line="1686"/>
<source>Error Opening %1 Folder</source>
<translation>開啟資料夾 %1 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1722"/>
- <location filename="../../src/yuzu/main.cpp" line="2128"/>
+ <location filename="../../src/yuzu/main.cpp" line="1687"/>
+ <location filename="../../src/yuzu/main.cpp" line="2093"/>
<source>Folder does not exist!</source>
<translation>資料夾不存在</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1734"/>
+ <location filename="../../src/yuzu/main.cpp" line="1699"/>
<source>Error Opening Transferable Shader Cache</source>
<translation>開啟通用著色器快取位置時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1735"/>
+ <location filename="../../src/yuzu/main.cpp" line="1700"/>
<source>Failed to create the shader cache directory for this title.</source>
<translation>無法新增此遊戲的著色器快取資料夾。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1787"/>
+ <location filename="../../src/yuzu/main.cpp" line="1752"/>
<source>Contents</source>
<translation>內容</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1789"/>
+ <location filename="../../src/yuzu/main.cpp" line="1754"/>
<source>Update</source>
<translation>遊戲更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1791"/>
+ <location filename="../../src/yuzu/main.cpp" line="1756"/>
<source>DLC</source>
<translation>DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Entry</source>
<translation>移除項目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1798"/>
+ <location filename="../../src/yuzu/main.cpp" line="1763"/>
<source>Remove Installed Game %1?</source>
<translation>移除已安裝的遊戲「%1」?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1828"/>
- <location filename="../../src/yuzu/main.cpp" line="1844"/>
- <location filename="../../src/yuzu/main.cpp" line="1875"/>
- <location filename="../../src/yuzu/main.cpp" line="1936"/>
- <location filename="../../src/yuzu/main.cpp" line="1954"/>
- <location filename="../../src/yuzu/main.cpp" line="1977"/>
+ <location filename="../../src/yuzu/main.cpp" line="1793"/>
+ <location filename="../../src/yuzu/main.cpp" line="1809"/>
+ <location filename="../../src/yuzu/main.cpp" line="1840"/>
+ <location filename="../../src/yuzu/main.cpp" line="1901"/>
+ <location filename="../../src/yuzu/main.cpp" line="1919"/>
+ <location filename="../../src/yuzu/main.cpp" line="1942"/>
<source>Successfully Removed</source>
<translation>移除成功</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1829"/>
+ <location filename="../../src/yuzu/main.cpp" line="1794"/>
<source>Successfully removed the installed base game.</source>
<translation>成功移除已安裝的遊戲。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1832"/>
- <location filename="../../src/yuzu/main.cpp" line="1847"/>
- <location filename="../../src/yuzu/main.cpp" line="1870"/>
+ <location filename="../../src/yuzu/main.cpp" line="1797"/>
+ <location filename="../../src/yuzu/main.cpp" line="1812"/>
+ <location filename="../../src/yuzu/main.cpp" line="1835"/>
<source>Error Removing %1</source>
<translation>移除 %1 失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1833"/>
+ <location filename="../../src/yuzu/main.cpp" line="1798"/>
<source>The base game is not installed in the NAND and cannot be removed.</source>
<translation>此遊戲並非安裝在內部儲存空間,因此無法移除。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1845"/>
+ <location filename="../../src/yuzu/main.cpp" line="1810"/>
<source>Successfully removed the installed update.</source>
<translation>成功移除已安裝的遊戲更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1848"/>
+ <location filename="../../src/yuzu/main.cpp" line="1813"/>
<source>There is no update installed for this title.</source>
<translation>此遊戲沒有已安裝的更新。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1871"/>
+ <location filename="../../src/yuzu/main.cpp" line="1836"/>
<source>There are no DLC installed for this title.</source>
<translation>此遊戲沒有已安裝的 DLC。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1876"/>
+ <location filename="../../src/yuzu/main.cpp" line="1841"/>
<source>Successfully removed %1 installed DLC.</source>
<translation>成功移除遊戲 %1 已安裝的 DLC。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1884"/>
+ <location filename="../../src/yuzu/main.cpp" line="1849"/>
<source>Delete OpenGL Transferable Shader Cache?</source>
<translation>刪除 OpenGL 模式的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1886"/>
+ <location filename="../../src/yuzu/main.cpp" line="1851"/>
<source>Delete Vulkan Transferable Shader Cache?</source>
<translation>刪除 Vulkan 模式的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1888"/>
+ <location filename="../../src/yuzu/main.cpp" line="1853"/>
<source>Delete All Transferable Shader Caches?</source>
<translation>刪除所有的著色器快取?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1890"/>
+ <location filename="../../src/yuzu/main.cpp" line="1855"/>
<source>Remove Custom Game Configuration?</source>
<translation>移除額外遊戲設定?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1861"/>
<source>Remove File</source>
<translation>刪除檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1931"/>
- <location filename="../../src/yuzu/main.cpp" line="1939"/>
+ <location filename="../../src/yuzu/main.cpp" line="1896"/>
+ <location filename="../../src/yuzu/main.cpp" line="1904"/>
<source>Error Removing Transferable Shader Cache</source>
<translation>刪除通用著色器快取時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1932"/>
- <location filename="../../src/yuzu/main.cpp" line="1950"/>
+ <location filename="../../src/yuzu/main.cpp" line="1897"/>
+ <location filename="../../src/yuzu/main.cpp" line="1915"/>
<source>A shader cache for this title does not exist.</source>
<translation>此遊戲沒有著色器快取</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1937"/>
+ <location filename="../../src/yuzu/main.cpp" line="1902"/>
<source>Successfully removed the transferable shader cache.</source>
<translation>成功刪除著色器快取。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1940"/>
+ <location filename="../../src/yuzu/main.cpp" line="1905"/>
<source>Failed to remove the transferable shader cache.</source>
<translation>刪除通用著色器快取失敗。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1949"/>
- <location filename="../../src/yuzu/main.cpp" line="1957"/>
+ <location filename="../../src/yuzu/main.cpp" line="1914"/>
+ <location filename="../../src/yuzu/main.cpp" line="1922"/>
<source>Error Removing Transferable Shader Caches</source>
<translation>刪除通用著色器快取時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1955"/>
+ <location filename="../../src/yuzu/main.cpp" line="1920"/>
<source>Successfully removed the transferable shader caches.</source>
<translation>成功刪除通用著色器快取。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1958"/>
+ <location filename="../../src/yuzu/main.cpp" line="1923"/>
<source>Failed to remove the transferable shader cache directory.</source>
<translation>無法刪除著色器快取資料夾。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1971"/>
- <location filename="../../src/yuzu/main.cpp" line="1980"/>
+ <location filename="../../src/yuzu/main.cpp" line="1936"/>
+ <location filename="../../src/yuzu/main.cpp" line="1945"/>
<source>Error Removing Custom Configuration</source>
<translation>移除額外遊戲設定時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1972"/>
+ <location filename="../../src/yuzu/main.cpp" line="1937"/>
<source>A custom configuration for this title does not exist.</source>
<translation>此遊戲沒有額外設定。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1978"/>
+ <location filename="../../src/yuzu/main.cpp" line="1943"/>
<source>Successfully removed the custom game configuration.</source>
<translation>成功移除額外遊戲設定。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1981"/>
+ <location filename="../../src/yuzu/main.cpp" line="1946"/>
<source>Failed to remove the custom game configuration.</source>
<translation>移除額外遊戲設定失敗。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1988"/>
- <location filename="../../src/yuzu/main.cpp" line="2067"/>
+ <location filename="../../src/yuzu/main.cpp" line="1953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2032"/>
<source>RomFS Extraction Failed!</source>
<translation>RomFS 抽取失敗!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="1989"/>
+ <location filename="../../src/yuzu/main.cpp" line="1954"/>
<source>There was an error copying the RomFS files or the user cancelled the operation.</source>
<translation>複製 RomFS 檔案時發生錯誤或使用者取消動作。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Full</source>
<translation>全部</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2047"/>
+ <location filename="../../src/yuzu/main.cpp" line="2012"/>
<source>Skeleton</source>
<translation>部分</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2049"/>
+ <location filename="../../src/yuzu/main.cpp" line="2014"/>
<source>Select RomFS Dump Mode</source>
<translation>選擇RomFS傾印模式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2050"/>
+ <location filename="../../src/yuzu/main.cpp" line="2015"/>
<source>Please select the how you would like the RomFS dumped.&lt;br&gt;Full will copy all of the files into the new directory while &lt;br&gt;skeleton will only create the directory structure.</source>
<translation>請選擇如何傾印 RomFS。&lt;br&gt;「全部」會複製所有檔案到新資料夾中,而&lt;br&gt;「部分」只會建立資料夾結構。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2068"/>
+ <location filename="../../src/yuzu/main.cpp" line="2033"/>
<source>There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation &gt; Configure &gt; System &gt; Filesystem &gt; Dump Root</source>
<translation>%1 沒有足夠的空間用於抽取 RomFS。請確保有足夠的空間或於模擬 &gt; 設定 &gt;系統 &gt;檔案系統 &gt; 傾印根目錄中選擇其他資料夾。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
<source>Extracting RomFS...</source>
<translation>抽取 RomFS 中...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2075"/>
- <location filename="../../src/yuzu/main.cpp" line="2261"/>
+ <location filename="../../src/yuzu/main.cpp" line="2040"/>
+ <location filename="../../src/yuzu/main.cpp" line="2226"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2082"/>
+ <location filename="../../src/yuzu/main.cpp" line="2047"/>
<source>RomFS Extraction Succeeded!</source>
<translation>RomFS 抽取完成!</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2083"/>
+ <location filename="../../src/yuzu/main.cpp" line="2048"/>
<source>The operation completed successfully.</source>
<translation>動作已成功完成</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2127"/>
+ <location filename="../../src/yuzu/main.cpp" line="2092"/>
<source>Error Opening %1</source>
<translation>開啟 %1 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2136"/>
+ <location filename="../../src/yuzu/main.cpp" line="2101"/>
<source>Select Directory</source>
<translation>選擇資料夾</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2163"/>
+ <location filename="../../src/yuzu/main.cpp" line="2128"/>
<source>Properties</source>
<translation>屬性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2164"/>
+ <location filename="../../src/yuzu/main.cpp" line="2129"/>
<source>The game properties could not be loaded.</source>
<translation>無法載入遊戲屬性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2181"/>
+ <location filename="../../src/yuzu/main.cpp" line="2146"/>
<source>Switch Executable (%1);;All Files (*.*)</source>
<comment>%1 is an identifier for the Switch executable file extensions.</comment>
<translation>Switch 執行檔 (%1);;所有檔案 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2185"/>
+ <location filename="../../src/yuzu/main.cpp" line="2150"/>
<source>Load File</source>
<translation>開啟檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2198"/>
+ <location filename="../../src/yuzu/main.cpp" line="2163"/>
<source>Open Extracted ROM Directory</source>
<translation>開啟已抽取的 ROM 資料夾</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2209"/>
+ <location filename="../../src/yuzu/main.cpp" line="2174"/>
<source>Invalid Directory Selected</source>
<translation>選擇的資料夾無效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2210"/>
+ <location filename="../../src/yuzu/main.cpp" line="2175"/>
<source>The directory you have selected does not contain a &apos;main&apos; file.</source>
<translation>選擇的資料夾未包含「main」檔案。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2220"/>
+ <location filename="../../src/yuzu/main.cpp" line="2185"/>
<source>Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci)</source>
<translation>可安装的 Switch 檔案 (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX 卡帶映像 (*.xci)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2225"/>
+ <location filename="../../src/yuzu/main.cpp" line="2190"/>
<source>Install Files</source>
<translation>安裝檔案</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2269"/>
+ <location filename="../../src/yuzu/main.cpp" line="2234"/>
<source>%n file(s) remaining</source>
<translation><numerusform>剩餘 %n 個檔案</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2271"/>
+ <location filename="../../src/yuzu/main.cpp" line="2236"/>
<source>Installing file &quot;%1&quot;...</source>
<translation>正在安裝檔案「%1」...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2317"/>
- <location filename="../../src/yuzu/main.cpp" line="2331"/>
+ <location filename="../../src/yuzu/main.cpp" line="2282"/>
+ <location filename="../../src/yuzu/main.cpp" line="2296"/>
<source>Install Results</source>
<translation>安裝結果</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2318"/>
+ <location filename="../../src/yuzu/main.cpp" line="2283"/>
<source>To avoid possible conflicts, we discourage users from installing base games to the NAND.
Please, only use this feature to install updates and DLC.</source>
<translation>為了避免潛在的衝突,不建議將遊戲本體安裝至內部儲存空間。
此功能僅用於安裝遊戲更新和 DLC。</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2324"/>
+ <location filename="../../src/yuzu/main.cpp" line="2289"/>
<source>%n file(s) were newly installed
</source>
<translation><numerusform>最近安裝了 %n 個檔案
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2327"/>
+ <location filename="../../src/yuzu/main.cpp" line="2292"/>
<source>%n file(s) were overwritten
</source>
<translation><numerusform>%n 個檔案被取代
</numerusform></translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="2329"/>
+ <location filename="../../src/yuzu/main.cpp" line="2294"/>
<source>%n file(s) failed to install
</source>
<translation><numerusform>%n 個檔案安裝失敗</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2430"/>
+ <location filename="../../src/yuzu/main.cpp" line="2395"/>
<source>System Application</source>
<translation>系統應用程式</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2431"/>
+ <location filename="../../src/yuzu/main.cpp" line="2396"/>
<source>System Archive</source>
<translation>系統檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2432"/>
+ <location filename="../../src/yuzu/main.cpp" line="2397"/>
<source>System Application Update</source>
<translation>系統應用程式更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2433"/>
+ <location filename="../../src/yuzu/main.cpp" line="2398"/>
<source>Firmware Package (Type A)</source>
<translation>韌體包(A型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2434"/>
+ <location filename="../../src/yuzu/main.cpp" line="2399"/>
<source>Firmware Package (Type B)</source>
<translation>韌體包(B型)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2435"/>
+ <location filename="../../src/yuzu/main.cpp" line="2400"/>
<source>Game</source>
<translation>遊戲</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2436"/>
+ <location filename="../../src/yuzu/main.cpp" line="2401"/>
<source>Game Update</source>
<translation>遊戲更新</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2437"/>
+ <location filename="../../src/yuzu/main.cpp" line="2402"/>
<source>Game DLC</source>
<translation>遊戲 DLC</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2438"/>
+ <location filename="../../src/yuzu/main.cpp" line="2403"/>
<source>Delta Title</source>
<translation>Delta Title</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2441"/>
+ <location filename="../../src/yuzu/main.cpp" line="2406"/>
<source>Select NCA Install Type...</source>
<translation>選擇 NCA 安裝類型...</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2442"/>
+ <location filename="../../src/yuzu/main.cpp" line="2407"/>
<source>Please select the type of title you would like to install this NCA as:
(In most instances, the default &apos;Game&apos; is fine.)</source>
<translation>請選擇此 NCA 的安裝類型:
(在多數情況下,選擇預設的「遊戲」即可。)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2448"/>
+ <location filename="../../src/yuzu/main.cpp" line="2413"/>
<source>Failed to Install</source>
<translation>安裝失敗</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2449"/>
+ <location filename="../../src/yuzu/main.cpp" line="2414"/>
<source>The title type you selected for the NCA is invalid.</source>
<translation>選擇的 NCA 安裝類型無效。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2484"/>
+ <location filename="../../src/yuzu/main.cpp" line="2449"/>
<source>File not found</source>
<translation>找不到檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2485"/>
+ <location filename="../../src/yuzu/main.cpp" line="2450"/>
<source>File &quot;%1&quot; not found</source>
<translation>找不到「%1」檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2554"/>
+ <location filename="../../src/yuzu/main.cpp" line="2519"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2568"/>
+ <location filename="../../src/yuzu/main.cpp" line="2533"/>
<source>Missing yuzu Account</source>
<translation>未設定 yuzu 帳號</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2569"/>
+ <location filename="../../src/yuzu/main.cpp" line="2534"/>
<source>In order to submit a game compatibility test case, you must link your yuzu account.&lt;br&gt;&lt;br/&gt;To link your yuzu account, go to Emulation &amp;gt; Configuration &amp;gt; Web.</source>
<translation>為了上傳相容性測試結果,您必須登入 yuzu 帳號。&lt;br&gt;&lt;br/&gt;欲登入 yuzu 帳號請至模擬 &amp;gt; 設定 &amp;gt; 網路。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2579"/>
+ <location filename="../../src/yuzu/main.cpp" line="2544"/>
<source>Error opening URL</source>
<translation>開啟 URL 時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2580"/>
+ <location filename="../../src/yuzu/main.cpp" line="2545"/>
<source>Unable to open the URL &quot;%1&quot;.</source>
<translation>無法開啟 URL:「%1」。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2847"/>
+ <location filename="../../src/yuzu/main.cpp" line="2812"/>
<source>TAS Recording</source>
<translation>TAS 錄製</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2848"/>
+ <location filename="../../src/yuzu/main.cpp" line="2813"/>
<source>Overwrite file of player 1?</source>
<translation>覆寫玩家 1 的檔案?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2914"/>
+ <location filename="../../src/yuzu/main.cpp" line="2839"/>
+ <source>Invalid config detected</source>
+ <translation>偵測到無效設定</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2840"/>
+ <source>Handheld controller can&apos;t be used on docked mode. Pro controller will be selected.</source>
+ <translation>掌機手把無法在主機模式中使用。將會選擇 Pro 手把。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>Error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2933"/>
+ <location filename="../../src/yuzu/main.cpp" line="2945"/>
+ <source>The current game is not looking for amiibos</source>
+ <translation>当前游戏并没有在寻找 Amiibos</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>Amiibo</source>
+ <translation>Amiibo</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2940"/>
+ <location filename="../../src/yuzu/main.cpp" line="2974"/>
+ <source>The current amiibo has been removed</source>
+ <translation>当前的 Amiibo 已被移除。</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/main.cpp" line="2951"/>
<source>Amiibo File (%1);; All Files (*.*)</source>
<translation>Amiibo 檔案 (%1);; 所有檔案 (*.*)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2915"/>
+ <location filename="../../src/yuzu/main.cpp" line="2952"/>
<source>Load Amiibo</source>
<translation>開啟 Amiibo</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2934"/>
+ <location filename="../../src/yuzu/main.cpp" line="2980"/>
<source>Error opening Amiibo data file</source>
<translation>開啟 Amiibo 檔案時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2935"/>
+ <location filename="../../src/yuzu/main.cpp" line="2981"/>
<source>Unable to open Amiibo file &quot;%1&quot; for reading.</source>
<translation>無法開啟 Amiibo 檔案 %1。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2943"/>
+ <location filename="../../src/yuzu/main.cpp" line="2989"/>
<source>Error reading Amiibo data file</source>
<translation>讀取 Amiibo 檔案時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2944"/>
+ <location filename="../../src/yuzu/main.cpp" line="2990"/>
<source>Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes.</source>
<translation>無法讀取完整的 Amiibo 資料。應讀取 %1 位元組,但實際僅讀取到 %2 位元組。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2952"/>
+ <location filename="../../src/yuzu/main.cpp" line="2998"/>
<source>Error loading Amiibo data</source>
<translation>載入 Amiibo 資料時發生錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="2953"/>
+ <location filename="../../src/yuzu/main.cpp" line="2999"/>
<source>Unable to load Amiibo data.</source>
<translation>無法載入 Amiibo 資料。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3002"/>
+ <location filename="../../src/yuzu/main.cpp" line="3048"/>
<source>Capture Screenshot</source>
<translation>截圖</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3003"/>
+ <location filename="../../src/yuzu/main.cpp" line="3049"/>
<source>PNG Image (*.png)</source>
<translation>PNG 圖片 (*.png)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3068"/>
+ <location filename="../../src/yuzu/main.cpp" line="3114"/>
<source>TAS state: Running %1/%2</source>
<translation>TAS 狀態:正在執行 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3070"/>
+ <location filename="../../src/yuzu/main.cpp" line="3116"/>
<source>TAS state: Recording %1</source>
<translation>TAS 狀態:正在錄製 %1</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3072"/>
+ <location filename="../../src/yuzu/main.cpp" line="3118"/>
<source>TAS state: Idle %1/%2</source>
<translation>TAS 狀態:閒置 %1/%2</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3074"/>
+ <location filename="../../src/yuzu/main.cpp" line="3120"/>
<source>TAS State: Invalid</source>
<translation>TAS 狀態:無效</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Stop Running</source>
<translation>&amp;停止執行</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3088"/>
+ <location filename="../../src/yuzu/main.cpp" line="3134"/>
<source>&amp;Start</source>
<translation>開始(&amp;S)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>Stop R&amp;ecording</source>
<translation>停止錄製</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3089"/>
+ <location filename="../../src/yuzu/main.cpp" line="3135"/>
<source>R&amp;ecord</source>
<translation>錄製 (&amp;E)</translation>
</message>
<message numerus="yes">
- <location filename="../../src/yuzu/main.cpp" line="3113"/>
+ <location filename="../../src/yuzu/main.cpp" line="3159"/>
<source>Building: %n shader(s)</source>
<translation><numerusform>正在編譯 %n 個著色器檔案</numerusform></translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3122"/>
+ <location filename="../../src/yuzu/main.cpp" line="3168"/>
<source>Scale: %1x</source>
<comment>%1 is the resolution scaling factor</comment>
<translation>縮放比例:%1x</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3125"/>
+ <location filename="../../src/yuzu/main.cpp" line="3171"/>
<source>Speed: %1% / %2%</source>
<translation>速度:%1% / %2%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3129"/>
+ <location filename="../../src/yuzu/main.cpp" line="3175"/>
<source>Speed: %1%</source>
<translation>速度:%1%</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3133"/>
+ <location filename="../../src/yuzu/main.cpp" line="3179"/>
<source>Game: %1 FPS (Unlocked)</source>
<translation>遊戲: %1 FPS(未限制)</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3135"/>
+ <location filename="../../src/yuzu/main.cpp" line="3181"/>
<source>Game: %1 FPS</source>
<translation>遊戲:%1 FPS</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3137"/>
+ <location filename="../../src/yuzu/main.cpp" line="3183"/>
<source>Frame: %1 ms</source>
<translation>畫格延遲:%1 ms</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3148"/>
+ <location filename="../../src/yuzu/main.cpp" line="3194"/>
<source>GPU NORMAL</source>
<translation>GPU 一般效能</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3153"/>
+ <location filename="../../src/yuzu/main.cpp" line="3199"/>
<source>GPU HIGH</source>
<translation>GPU 高效能</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3158"/>
+ <location filename="../../src/yuzu/main.cpp" line="3204"/>
<source>GPU EXTREME</source>
<translation>GPU 最高效能</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3163"/>
+ <location filename="../../src/yuzu/main.cpp" line="3209"/>
<source>GPU ERROR</source>
<translation>GPU 錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3173"/>
+ <location filename="../../src/yuzu/main.cpp" line="3219"/>
<source>NEAREST</source>
<translation>最近鄰域</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3176"/>
- <location filename="../../src/yuzu/main.cpp" line="3191"/>
+ <location filename="../../src/yuzu/main.cpp" line="3222"/>
+ <location filename="../../src/yuzu/main.cpp" line="3237"/>
<source>BILINEAR</source>
<translation>雙線性</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3179"/>
+ <location filename="../../src/yuzu/main.cpp" line="3225"/>
<source>BICUBIC</source>
<translation>雙三次</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3182"/>
+ <location filename="../../src/yuzu/main.cpp" line="3228"/>
<source>GAUSSIAN</source>
<translation>高斯</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3185"/>
+ <location filename="../../src/yuzu/main.cpp" line="3231"/>
<source>SCALEFORCE</source>
<translation>強制縮放</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3188"/>
+ <location filename="../../src/yuzu/main.cpp" line="3234"/>
<source>FSR</source>
<translation>FSR</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3200"/>
- <location filename="../../src/yuzu/main.cpp" line="3206"/>
+ <location filename="../../src/yuzu/main.cpp" line="3246"/>
+ <location filename="../../src/yuzu/main.cpp" line="3252"/>
<source>NO AA</source>
<translation>抗鋸齒關</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3203"/>
+ <location filename="../../src/yuzu/main.cpp" line="3249"/>
<source>FXAA</source>
<translation>FXAA</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3264"/>
+ <location filename="../../src/yuzu/main.cpp" line="3310"/>
<source>The game you are trying to load requires additional files from your Switch to be dumped before playing.&lt;br/&gt;&lt;br/&gt;For more information on dumping these files, please see the following wiki page: &lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;Dumping System Archives and the Shared Fonts from a Switch Console&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>此遊戲需要從您的 Switch 傾印額外檔案。&lt;br/&gt;&lt;br/&gt;有關傾印這些檔案的更多資訊,請參閱以下 wiki 網頁:Dumping System Archives and the Shared Fonts from a Switch Console&lt;a href=&apos;https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/&apos;&gt;。&lt;br/&gt;&lt;br/&gt;您要停止並回到遊戲清單嗎?繼續模擬可能會導致當機、存檔損毀或其他錯誤。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3279"/>
+ <location filename="../../src/yuzu/main.cpp" line="3325"/>
<source>yuzu was unable to locate a Switch system archive. %1</source>
<translation>Yuzu 找不到 Switch 系統檔案 %1 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3281"/>
+ <location filename="../../src/yuzu/main.cpp" line="3327"/>
<source>yuzu was unable to locate a Switch system archive: %1. %2</source>
<translation>Yuzu 找不到 Switch 系統檔案:%1。%2 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3285"/>
+ <location filename="../../src/yuzu/main.cpp" line="3331"/>
<source>System Archive Not Found</source>
<translation>找不到系統檔案</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3287"/>
+ <location filename="../../src/yuzu/main.cpp" line="3333"/>
<source>System Archive Missing</source>
<translation>系統檔案遺失</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3293"/>
+ <location filename="../../src/yuzu/main.cpp" line="3339"/>
<source>yuzu was unable to locate the Switch shared fonts. %1</source>
<translation>Yuzu 找不到 Switch 共享字型 %1 </translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3294"/>
+ <location filename="../../src/yuzu/main.cpp" line="3340"/>
<source>Shared Fonts Not Found</source>
<translation>找不到共享字型</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3296"/>
+ <location filename="../../src/yuzu/main.cpp" line="3342"/>
<source>Shared Font Missing</source>
<translation>遺失共享字型</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3302"/>
+ <location filename="../../src/yuzu/main.cpp" line="3348"/>
<source>Fatal Error</source>
<translation>嚴重錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3303"/>
+ <location filename="../../src/yuzu/main.cpp" line="3349"/>
<source>yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: &lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs.</source>
<translation>yuzu 發生嚴重錯誤,請檢視紀錄以了解細節。更多資訊請參閱網頁:&lt;a href=&apos;https://community.citra-emu.org/t/how-to-upload-the-log-file/296&apos;&gt;How to Upload the Log File&lt;/a&gt;。&lt;br/&gt;&lt;br/&gt;您要停止模擬並回到遊戲清單嗎?繼續模擬可能會導致當機、存檔損毀或其他錯誤。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3312"/>
+ <location filename="../../src/yuzu/main.cpp" line="3358"/>
<source>Fatal Error encountered</source>
<translation>發生嚴重錯誤</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3335"/>
+ <location filename="../../src/yuzu/main.cpp" line="3381"/>
<source>Confirm Key Rederivation</source>
<translation>確認重新產生金鑰</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3336"/>
+ <location filename="../../src/yuzu/main.cpp" line="3382"/>
<source>You are about to force rederive all of your keys.
If you do not know what this means or what you are doing,
this is a potentially destructive action.
@@ -4723,37 +4687,37 @@ This will delete your autogenerated key files and re-run the key derivation modu
這將刪除您自動產生的金鑰檔案並重新執行產生金鑰模組。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3368"/>
+ <location filename="../../src/yuzu/main.cpp" line="3414"/>
<source>Missing fuses</source>
<translation>遺失項目</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3371"/>
+ <location filename="../../src/yuzu/main.cpp" line="3417"/>
<source> - Missing BOOT0</source>
<translation>- 遺失 BOOT0</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3374"/>
+ <location filename="../../src/yuzu/main.cpp" line="3420"/>
<source> - Missing BCPKG2-1-Normal-Main</source>
<translation> - 遺失 BCPKG2-1-Normal-Main</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3377"/>
+ <location filename="../../src/yuzu/main.cpp" line="3423"/>
<source> - Missing PRODINFO</source>
<translation>- 遺失 PRODINFO</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3381"/>
+ <location filename="../../src/yuzu/main.cpp" line="3427"/>
<source>Derivation Components Missing</source>
<translation>遺失產生元件</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3382"/>
+ <location filename="../../src/yuzu/main.cpp" line="3428"/>
<source>Encryption keys are missing. &lt;br&gt;Please follow &lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;the yuzu quickstart guide&lt;/a&gt; to get all your keys, firmware and games.&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)&lt;/small&gt;</source>
<translation>缺少加密金鑰。 &lt;br&gt;請按照&lt;a href=&apos;https://yuzu-emu.org/help/quickstart/&apos;&gt;《Yuzu快速入門指南》來取得所有金鑰、韌體、遊戲&lt;br&gt;&lt;br&gt;&lt;small&gt;(%1)。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3391"/>
+ <location filename="../../src/yuzu/main.cpp" line="3437"/>
<source>Deriving keys...
This may take up to a minute depending
on your system&apos;s performance.</source>
@@ -4762,39 +4726,39 @@ on your system&apos;s performance.</source>
您的系統效能。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3393"/>
+ <location filename="../../src/yuzu/main.cpp" line="3439"/>
<source>Deriving Keys</source>
<translation>產生金鑰</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3438"/>
+ <location filename="../../src/yuzu/main.cpp" line="3484"/>
<source>Select RomFS Dump Target</source>
<translation>選擇 RomFS 傾印目標</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3439"/>
+ <location filename="../../src/yuzu/main.cpp" line="3485"/>
<source>Please select which RomFS you would like to dump.</source>
<translation>請選擇希望傾印的 RomFS。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3454"/>
+ <location filename="../../src/yuzu/main.cpp" line="3500"/>
<source>Are you sure you want to close yuzu?</source>
<translation>您確定要關閉 yuzu 嗎?</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3455"/>
- <location filename="../../src/yuzu/main.cpp" line="3535"/>
- <location filename="../../src/yuzu/main.cpp" line="3548"/>
+ <location filename="../../src/yuzu/main.cpp" line="3501"/>
+ <location filename="../../src/yuzu/main.cpp" line="3581"/>
+ <location filename="../../src/yuzu/main.cpp" line="3594"/>
<source>yuzu</source>
<translation>yuzu</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3536"/>
+ <location filename="../../src/yuzu/main.cpp" line="3582"/>
<source>Are you sure you want to stop the emulation? Any unsaved progress will be lost.</source>
<translation>您確定要停止模擬嗎?未儲存的進度將會遺失。</translation>
</message>
<message>
- <location filename="../../src/yuzu/main.cpp" line="3545"/>
+ <location filename="../../src/yuzu/main.cpp" line="3591"/>
<source>The currently running application has requested yuzu to not exit.
Would you like to bypass this and exit anyway?</source>
@@ -5334,8 +5298,8 @@ Screen.</source>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="269"/>
- <source>Load &amp;Amiibo...</source>
- <translation>開啟 &amp;Amiibo...</translation>
+ <source>Load/Remove &amp;Amiibo...</source>
+ <translation>加载/移除 Amiibo... (&amp;A)</translation>
</message>
<message>
<location filename="../../src/yuzu/main.ui" line="277"/>
@@ -5437,15 +5401,10 @@ p, li { white-space: pre-wrap; }
<context>
<name>PlayerControlPreview</name>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1572"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="1576"/>
<source>START/PAUSE</source>
<translation>開始 / 暫停</translation>
</message>
- <message>
- <location filename="../../src/yuzu/configuration/configure_input_player_widget.cpp" line="2685"/>
- <source>Charging</source>
- <translation>充電中</translation>
- </message>
</context>
<context>
<name>QObject</name>
@@ -5494,8 +5453,8 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="37"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="140"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="206"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="144"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="210"/>
<source>[not set]</source>
<translation>[未設定]</translation>
</message>
@@ -5506,10 +5465,10 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="56"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="229"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="233"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="237"/>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="241"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
<source>Axis %1%2</source>
<translation>Axis %1%2</translation>
</message>
@@ -5520,9 +5479,9 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="68"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="200"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="214"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="244"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="204"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="218"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="248"/>
<source>[unknown]</source>
<translation>[未知]</translation>
</message>
@@ -5648,76 +5607,86 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="106"/>
+ <source>Home</source>
+ <translation>HOME</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <source>Touch</source>
+ <translation>觸控</translation>
+ </message>
+ <message>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
<source>Wheel</source>
<comment>Indicates the mouse wheel</comment>
<translation>滑鼠滾輪</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="108"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
<source>Backward</source>
<translation>後退</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="110"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
<source>Forward</source>
<translation>前進</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="112"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
<source>Task</source>
<translation>任務鍵</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="114"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="118"/>
<source>Extra</source>
<translation>額外按鍵</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="116"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="120"/>
<source>[undefined]</source>
<translation>[未指定]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="150"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
<source>%1%2%3</source>
<translation>%1%2%3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="154"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="158"/>
<source>[invalid]</source>
<translation>[無效]</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="164"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="188"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="192"/>
<source>%1%2Hat %3</source>
<translation>%1%2Hat 控制器 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="168"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="191"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="194"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="172"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="195"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="198"/>
<source>%1%2Axis %3</source>
<translation>%1%2軸 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="174"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
<source>%1%2Axis %3,%4,%5</source>
<translation>%1%2軸 %3,%4,%5</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="178"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
<source>%1%2Motion %3</source>
<translation>%1%2體感 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="182"/>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="197"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="186"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="201"/>
<source>%1%2Button %3</source>
<translation>%1%2按鈕 %3</translation>
</message>
<message>
- <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="224"/>
+ <location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="228"/>
<source>[unused]</source>
<translation>[未使用]</translation>
</message>
diff --git a/externals/dynarmic b/externals/dynarmic
-Subproject a8cbfd9af4f3f3cdad6efcd067e76edec76c133
+Subproject 0fd32c5fa4a57738b0b390a597257b4be39a7a9
diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt
index be8325b47..dcc978827 100644
--- a/externals/ffmpeg/CMakeLists.txt
+++ b/externals/ffmpeg/CMakeLists.txt
@@ -214,6 +214,6 @@ else(WIN32)
set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE)
set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE)
set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE)
-endif(WIN32)
+endif()
unset(FFmpeg_COMPONENTS)
diff --git a/src/audio_core/common.h b/src/audio_core/common.h
index 1ab537588..e6b95769f 100644
--- a/src/audio_core/common.h
+++ b/src/audio_core/common.h
@@ -15,7 +15,9 @@ constexpr ResultCode ERR_INVALID_PARAMETERS{ErrorModule::Audio, 41};
constexpr ResultCode ERR_SPLITTER_SORT_FAILED{ErrorModule::Audio, 43};
} // namespace Audren
-constexpr u32_le CURRENT_PROCESS_REVISION = Common::MakeMagic('R', 'E', 'V', '9');
+constexpr u8 BASE_REVISION = '0';
+constexpr u32_le CURRENT_PROCESS_REVISION =
+ Common::MakeMagic('R', 'E', 'V', static_cast<u8>(BASE_REVISION + 0xA));
constexpr std::size_t MAX_MIX_BUFFERS = 24;
constexpr std::size_t MAX_BIQUAD_FILTERS = 2;
constexpr std::size_t MAX_CHANNEL_COUNT = 6;
diff --git a/src/common/bit_util.h b/src/common/bit_util.h
index f50d3308a..f37538e06 100644
--- a/src/common/bit_util.h
+++ b/src/common/bit_util.h
@@ -57,4 +57,11 @@ requires std::is_integral_v<T>
return static_cast<T>(1ULL << ((8U * sizeof(T)) - std::countl_zero(value - 1U)));
}
+template <size_t bit_index, typename T>
+requires std::is_integral_v<T>
+[[nodiscard]] constexpr bool Bit(const T value) {
+ static_assert(bit_index < BitSize<T>(), "bit_index must be smaller than size of T");
+ return ((value >> bit_index) & T(1)) == T(1);
+}
+
} // namespace Common
diff --git a/src/common/common_types.h b/src/common/common_types.h
index 4cec89fbd..99bffc460 100644
--- a/src/common/common_types.h
+++ b/src/common/common_types.h
@@ -46,13 +46,3 @@ using GPUVAddr = u64; ///< Represents a pointer in the GPU virtual address space
using u128 = std::array<std::uint64_t, 2>;
static_assert(sizeof(u128) == 16, "u128 must be 128 bits wide");
-
-// An inheritable class to disallow the copy constructor and operator= functions
-class NonCopyable {
-protected:
- constexpr NonCopyable() = default;
- ~NonCopyable() = default;
-
- NonCopyable(const NonCopyable&) = delete;
- NonCopyable& operator=(const NonCopyable&) = delete;
-};
diff --git a/src/common/fs/fs_util.cpp b/src/common/fs/fs_util.cpp
index 9f8671982..0068112e6 100644
--- a/src/common/fs/fs_util.cpp
+++ b/src/common/fs/fs_util.cpp
@@ -16,6 +16,10 @@ std::u8string BufferToU8String(std::span<const u8> buffer) {
return std::u8string{buffer.begin(), std::ranges::find(buffer, u8{0})};
}
+std::u8string_view BufferToU8StringView(std::span<const u8> buffer) {
+ return std::u8string_view{reinterpret_cast<const char8_t*>(buffer.data())};
+}
+
std::string ToUTF8String(std::u8string_view u8_string) {
return std::string{u8_string.begin(), u8_string.end()};
}
@@ -24,6 +28,10 @@ std::string BufferToUTF8String(std::span<const u8> buffer) {
return std::string{buffer.begin(), std::ranges::find(buffer, u8{0})};
}
+std::string_view BufferToUTF8StringView(std::span<const u8> buffer) {
+ return std::string_view{reinterpret_cast<const char*>(buffer.data())};
+}
+
std::string PathToUTF8String(const std::filesystem::path& path) {
return ToUTF8String(path.u8string());
}
diff --git a/src/common/fs/fs_util.h b/src/common/fs/fs_util.h
index 1ec82eb35..1620d38c9 100644
--- a/src/common/fs/fs_util.h
+++ b/src/common/fs/fs_util.h
@@ -38,6 +38,15 @@ concept IsChar = std::same_as<T, char>;
[[nodiscard]] std::u8string BufferToU8String(std::span<const u8> buffer);
/**
+ * Same as BufferToU8String, but returns a string view of the buffer.
+ *
+ * @param buffer Buffer of bytes
+ *
+ * @returns UTF-8 encoded std::u8string_view.
+ */
+[[nodiscard]] std::u8string_view BufferToU8StringView(std::span<const u8> buffer);
+
+/**
* Converts a std::u8string or std::u8string_view to a UTF-8 encoded std::string.
*
* @param u8_string UTF-8 encoded u8string
@@ -58,6 +67,15 @@ concept IsChar = std::same_as<T, char>;
[[nodiscard]] std::string BufferToUTF8String(std::span<const u8> buffer);
/**
+ * Same as BufferToUTF8String, but returns a string view of the buffer.
+ *
+ * @param buffer Buffer of bytes
+ *
+ * @returns UTF-8 encoded std::string_view.
+ */
+[[nodiscard]] std::string_view BufferToUTF8StringView(std::span<const u8> buffer);
+
+/**
* Converts a filesystem path to a UTF-8 encoded std::string.
*
* @param path Filesystem path
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp
index 28949fe5e..c465cfc14 100644
--- a/src/common/host_memory.cpp
+++ b/src/common/host_memory.cpp
@@ -327,8 +327,8 @@ private:
bool IsNiechePlaceholder(size_t virtual_offset, size_t length) const {
const auto it = placeholders.upper_bound({virtual_offset, virtual_offset + length});
if (it != placeholders.end() && it->lower() == virtual_offset + length) {
- const bool is_root = it == placeholders.begin() && virtual_offset == 0;
- return is_root || std::prev(it)->upper() == virtual_offset;
+ return it == placeholders.begin() ? virtual_offset == 0
+ : std::prev(it)->upper() == virtual_offset;
}
return false;
}
diff --git a/src/common/intrusive_red_black_tree.h b/src/common/intrusive_red_black_tree.h
index 3173cc449..b296b639e 100644
--- a/src/common/intrusive_red_black_tree.h
+++ b/src/common/intrusive_red_black_tree.h
@@ -4,6 +4,8 @@
#pragma once
+#include "common/alignment.h"
+#include "common/common_funcs.h"
#include "common/parent_of_member.h"
#include "common/tree.h"
@@ -15,32 +17,33 @@ class IntrusiveRedBlackTreeImpl;
}
+#pragma pack(push, 4)
struct IntrusiveRedBlackTreeNode {
+ YUZU_NON_COPYABLE(IntrusiveRedBlackTreeNode);
+
public:
- using EntryType = RBEntry<IntrusiveRedBlackTreeNode>;
+ using RBEntry = freebsd::RBEntry<IntrusiveRedBlackTreeNode>;
- constexpr IntrusiveRedBlackTreeNode() = default;
+private:
+ RBEntry m_entry;
- void SetEntry(const EntryType& new_entry) {
- entry = new_entry;
- }
+public:
+ explicit IntrusiveRedBlackTreeNode() = default;
- [[nodiscard]] EntryType& GetEntry() {
- return entry;
+ [[nodiscard]] constexpr RBEntry& GetRBEntry() {
+ return m_entry;
}
-
- [[nodiscard]] const EntryType& GetEntry() const {
- return entry;
+ [[nodiscard]] constexpr const RBEntry& GetRBEntry() const {
+ return m_entry;
}
-private:
- EntryType entry{};
-
- friend class impl::IntrusiveRedBlackTreeImpl;
-
- template <class, class, class>
- friend class IntrusiveRedBlackTree;
+ constexpr void SetRBEntry(const RBEntry& entry) {
+ m_entry = entry;
+ }
};
+static_assert(sizeof(IntrusiveRedBlackTreeNode) ==
+ 3 * sizeof(void*) + std::max<size_t>(sizeof(freebsd::RBColor), 4));
+#pragma pack(pop)
template <class T, class Traits, class Comparator>
class IntrusiveRedBlackTree;
@@ -48,12 +51,17 @@ class IntrusiveRedBlackTree;
namespace impl {
class IntrusiveRedBlackTreeImpl {
+ YUZU_NON_COPYABLE(IntrusiveRedBlackTreeImpl);
+
private:
template <class, class, class>
friend class ::Common::IntrusiveRedBlackTree;
- using RootType = RBHead<IntrusiveRedBlackTreeNode>;
- RootType root;
+private:
+ using RootType = freebsd::RBHead<IntrusiveRedBlackTreeNode>;
+
+private:
+ RootType m_root;
public:
template <bool Const>
@@ -81,149 +89,150 @@ public:
IntrusiveRedBlackTreeImpl::reference>;
private:
- pointer node;
+ pointer m_node;
public:
- explicit Iterator(pointer n) : node(n) {}
+ constexpr explicit Iterator(pointer n) : m_node(n) {}
- bool operator==(const Iterator& rhs) const {
- return this->node == rhs.node;
+ constexpr bool operator==(const Iterator& rhs) const {
+ return m_node == rhs.m_node;
}
- bool operator!=(const Iterator& rhs) const {
+ constexpr bool operator!=(const Iterator& rhs) const {
return !(*this == rhs);
}
- pointer operator->() const {
- return this->node;
+ constexpr pointer operator->() const {
+ return m_node;
}
- reference operator*() const {
- return *this->node;
+ constexpr reference operator*() const {
+ return *m_node;
}
- Iterator& operator++() {
- this->node = GetNext(this->node);
+ constexpr Iterator& operator++() {
+ m_node = GetNext(m_node);
return *this;
}
- Iterator& operator--() {
- this->node = GetPrev(this->node);
+ constexpr Iterator& operator--() {
+ m_node = GetPrev(m_node);
return *this;
}
- Iterator operator++(int) {
+ constexpr Iterator operator++(int) {
const Iterator it{*this};
++(*this);
return it;
}
- Iterator operator--(int) {
+ constexpr Iterator operator--(int) {
const Iterator it{*this};
--(*this);
return it;
}
- operator Iterator<true>() const {
- return Iterator<true>(this->node);
+ constexpr operator Iterator<true>() const {
+ return Iterator<true>(m_node);
}
};
private:
- // Define accessors using RB_* functions.
- bool EmptyImpl() const {
- return root.IsEmpty();
+ constexpr bool EmptyImpl() const {
+ return m_root.IsEmpty();
}
- IntrusiveRedBlackTreeNode* GetMinImpl() const {
- return RB_MIN(const_cast<RootType*>(&root));
+ constexpr IntrusiveRedBlackTreeNode* GetMinImpl() const {
+ return freebsd::RB_MIN(const_cast<RootType&>(m_root));
}
- IntrusiveRedBlackTreeNode* GetMaxImpl() const {
- return RB_MAX(const_cast<RootType*>(&root));
+ constexpr IntrusiveRedBlackTreeNode* GetMaxImpl() const {
+ return freebsd::RB_MAX(const_cast<RootType&>(m_root));
}
- IntrusiveRedBlackTreeNode* RemoveImpl(IntrusiveRedBlackTreeNode* node) {
- return RB_REMOVE(&root, node);
+ constexpr IntrusiveRedBlackTreeNode* RemoveImpl(IntrusiveRedBlackTreeNode* node) {
+ return freebsd::RB_REMOVE(m_root, node);
}
public:
- static IntrusiveRedBlackTreeNode* GetNext(IntrusiveRedBlackTreeNode* node) {
- return RB_NEXT(node);
+ static constexpr IntrusiveRedBlackTreeNode* GetNext(IntrusiveRedBlackTreeNode* node) {
+ return freebsd::RB_NEXT(node);
}
- static IntrusiveRedBlackTreeNode* GetPrev(IntrusiveRedBlackTreeNode* node) {
- return RB_PREV(node);
+ static constexpr IntrusiveRedBlackTreeNode* GetPrev(IntrusiveRedBlackTreeNode* node) {
+ return freebsd::RB_PREV(node);
}
- static const IntrusiveRedBlackTreeNode* GetNext(const IntrusiveRedBlackTreeNode* node) {
+ static constexpr IntrusiveRedBlackTreeNode const* GetNext(
+ IntrusiveRedBlackTreeNode const* node) {
return static_cast<const IntrusiveRedBlackTreeNode*>(
GetNext(const_cast<IntrusiveRedBlackTreeNode*>(node)));
}
- static const IntrusiveRedBlackTreeNode* GetPrev(const IntrusiveRedBlackTreeNode* node) {
+ static constexpr IntrusiveRedBlackTreeNode const* GetPrev(
+ IntrusiveRedBlackTreeNode const* node) {
return static_cast<const IntrusiveRedBlackTreeNode*>(
GetPrev(const_cast<IntrusiveRedBlackTreeNode*>(node)));
}
public:
- constexpr IntrusiveRedBlackTreeImpl() {}
+ constexpr IntrusiveRedBlackTreeImpl() = default;
// Iterator accessors.
- iterator begin() {
+ constexpr iterator begin() {
return iterator(this->GetMinImpl());
}
- const_iterator begin() const {
+ constexpr const_iterator begin() const {
return const_iterator(this->GetMinImpl());
}
- iterator end() {
+ constexpr iterator end() {
return iterator(static_cast<IntrusiveRedBlackTreeNode*>(nullptr));
}
- const_iterator end() const {
+ constexpr const_iterator end() const {
return const_iterator(static_cast<const IntrusiveRedBlackTreeNode*>(nullptr));
}
- const_iterator cbegin() const {
+ constexpr const_iterator cbegin() const {
return this->begin();
}
- const_iterator cend() const {
+ constexpr const_iterator cend() const {
return this->end();
}
- iterator iterator_to(reference ref) {
- return iterator(&ref);
+ constexpr iterator iterator_to(reference ref) {
+ return iterator(std::addressof(ref));
}
- const_iterator iterator_to(const_reference ref) const {
- return const_iterator(&ref);
+ constexpr const_iterator iterator_to(const_reference ref) const {
+ return const_iterator(std::addressof(ref));
}
// Content management.
- bool empty() const {
+ constexpr bool empty() const {
return this->EmptyImpl();
}
- reference back() {
+ constexpr reference back() {
return *this->GetMaxImpl();
}
- const_reference back() const {
+ constexpr const_reference back() const {
return *this->GetMaxImpl();
}
- reference front() {
+ constexpr reference front() {
return *this->GetMinImpl();
}
- const_reference front() const {
+ constexpr const_reference front() const {
return *this->GetMinImpl();
}
- iterator erase(iterator it) {
+ constexpr iterator erase(iterator it) {
auto cur = std::addressof(*it);
auto next = GetNext(cur);
this->RemoveImpl(cur);
@@ -234,16 +243,16 @@ public:
} // namespace impl
template <typename T>
-concept HasLightCompareType = requires {
- { std::is_same<typename T::LightCompareType, void>::value } -> std::convertible_to<bool>;
+concept HasRedBlackKeyType = requires {
+ { std::is_same<typename T::RedBlackKeyType, void>::value } -> std::convertible_to<bool>;
};
namespace impl {
template <typename T, typename Default>
- consteval auto* GetLightCompareType() {
- if constexpr (HasLightCompareType<T>) {
- return static_cast<typename T::LightCompareType*>(nullptr);
+ consteval auto* GetRedBlackKeyType() {
+ if constexpr (HasRedBlackKeyType<T>) {
+ return static_cast<typename T::RedBlackKeyType*>(nullptr);
} else {
return static_cast<Default*>(nullptr);
}
@@ -252,16 +261,17 @@ namespace impl {
} // namespace impl
template <typename T, typename Default>
-using LightCompareType = std::remove_pointer_t<decltype(impl::GetLightCompareType<T, Default>())>;
+using RedBlackKeyType = std::remove_pointer_t<decltype(impl::GetRedBlackKeyType<T, Default>())>;
template <class T, class Traits, class Comparator>
class IntrusiveRedBlackTree {
+ YUZU_NON_COPYABLE(IntrusiveRedBlackTree);
public:
using ImplType = impl::IntrusiveRedBlackTreeImpl;
private:
- ImplType impl{};
+ ImplType m_impl;
public:
template <bool Const>
@@ -277,9 +287,9 @@ public:
using iterator = Iterator<false>;
using const_iterator = Iterator<true>;
- using light_value_type = LightCompareType<Comparator, value_type>;
- using const_light_pointer = const light_value_type*;
- using const_light_reference = const light_value_type&;
+ using key_type = RedBlackKeyType<Comparator, value_type>;
+ using const_key_pointer = const key_type*;
+ using const_key_reference = const key_type&;
template <bool Const>
class Iterator {
@@ -298,183 +308,201 @@ public:
IntrusiveRedBlackTree::reference>;
private:
- ImplIterator iterator;
+ ImplIterator m_impl;
private:
- explicit Iterator(ImplIterator it) : iterator(it) {}
+ constexpr explicit Iterator(ImplIterator it) : m_impl(it) {}
- explicit Iterator(typename std::conditional<Const, ImplType::const_iterator,
- ImplType::iterator>::type::pointer ptr)
- : iterator(ptr) {}
+ constexpr explicit Iterator(typename ImplIterator::pointer p) : m_impl(p) {}
- ImplIterator GetImplIterator() const {
- return this->iterator;
+ constexpr ImplIterator GetImplIterator() const {
+ return m_impl;
}
public:
- bool operator==(const Iterator& rhs) const {
- return this->iterator == rhs.iterator;
+ constexpr bool operator==(const Iterator& rhs) const {
+ return m_impl == rhs.m_impl;
}
- bool operator!=(const Iterator& rhs) const {
+ constexpr bool operator!=(const Iterator& rhs) const {
return !(*this == rhs);
}
- pointer operator->() const {
- return Traits::GetParent(std::addressof(*this->iterator));
+ constexpr pointer operator->() const {
+ return Traits::GetParent(std::addressof(*m_impl));
}
- reference operator*() const {
- return *Traits::GetParent(std::addressof(*this->iterator));
+ constexpr reference operator*() const {
+ return *Traits::GetParent(std::addressof(*m_impl));
}
- Iterator& operator++() {
- ++this->iterator;
+ constexpr Iterator& operator++() {
+ ++m_impl;
return *this;
}
- Iterator& operator--() {
- --this->iterator;
+ constexpr Iterator& operator--() {
+ --m_impl;
return *this;
}
- Iterator operator++(int) {
+ constexpr Iterator operator++(int) {
const Iterator it{*this};
- ++this->iterator;
+ ++m_impl;
return it;
}
- Iterator operator--(int) {
+ constexpr Iterator operator--(int) {
const Iterator it{*this};
- --this->iterator;
+ --m_impl;
return it;
}
- operator Iterator<true>() const {
- return Iterator<true>(this->iterator);
+ constexpr operator Iterator<true>() const {
+ return Iterator<true>(m_impl);
}
};
private:
- static int CompareImpl(const IntrusiveRedBlackTreeNode* lhs,
- const IntrusiveRedBlackTreeNode* rhs) {
+ static constexpr int CompareImpl(const IntrusiveRedBlackTreeNode* lhs,
+ const IntrusiveRedBlackTreeNode* rhs) {
return Comparator::Compare(*Traits::GetParent(lhs), *Traits::GetParent(rhs));
}
- static int LightCompareImpl(const void* elm, const IntrusiveRedBlackTreeNode* rhs) {
- return Comparator::Compare(*static_cast<const_light_pointer>(elm), *Traits::GetParent(rhs));
+ static constexpr int CompareKeyImpl(const_key_reference key,
+ const IntrusiveRedBlackTreeNode* rhs) {
+ return Comparator::Compare(key, *Traits::GetParent(rhs));
}
// Define accessors using RB_* functions.
- IntrusiveRedBlackTreeNode* InsertImpl(IntrusiveRedBlackTreeNode* node) {
- return RB_INSERT(&impl.root, node, CompareImpl);
+ constexpr IntrusiveRedBlackTreeNode* InsertImpl(IntrusiveRedBlackTreeNode* node) {
+ return freebsd::RB_INSERT(m_impl.m_root, node, CompareImpl);
}
- IntrusiveRedBlackTreeNode* FindImpl(const IntrusiveRedBlackTreeNode* node) const {
- return RB_FIND(const_cast<ImplType::RootType*>(&impl.root),
- const_cast<IntrusiveRedBlackTreeNode*>(node), CompareImpl);
+ constexpr IntrusiveRedBlackTreeNode* FindImpl(IntrusiveRedBlackTreeNode const* node) const {
+ return freebsd::RB_FIND(const_cast<ImplType::RootType&>(m_impl.m_root),
+ const_cast<IntrusiveRedBlackTreeNode*>(node), CompareImpl);
}
- IntrusiveRedBlackTreeNode* NFindImpl(const IntrusiveRedBlackTreeNode* node) const {
- return RB_NFIND(const_cast<ImplType::RootType*>(&impl.root),
- const_cast<IntrusiveRedBlackTreeNode*>(node), CompareImpl);
+ constexpr IntrusiveRedBlackTreeNode* NFindImpl(IntrusiveRedBlackTreeNode const* node) const {
+ return freebsd::RB_NFIND(const_cast<ImplType::RootType&>(m_impl.m_root),
+ const_cast<IntrusiveRedBlackTreeNode*>(node), CompareImpl);
}
- IntrusiveRedBlackTreeNode* FindLightImpl(const_light_pointer lelm) const {
- return RB_FIND_LIGHT(const_cast<ImplType::RootType*>(&impl.root),
- static_cast<const void*>(lelm), LightCompareImpl);
+ constexpr IntrusiveRedBlackTreeNode* FindKeyImpl(const_key_reference key) const {
+ return freebsd::RB_FIND_KEY(const_cast<ImplType::RootType&>(m_impl.m_root), key,
+ CompareKeyImpl);
}
- IntrusiveRedBlackTreeNode* NFindLightImpl(const_light_pointer lelm) const {
- return RB_NFIND_LIGHT(const_cast<ImplType::RootType*>(&impl.root),
- static_cast<const void*>(lelm), LightCompareImpl);
+ constexpr IntrusiveRedBlackTreeNode* NFindKeyImpl(const_key_reference key) const {
+ return freebsd::RB_NFIND_KEY(const_cast<ImplType::RootType&>(m_impl.m_root), key,
+ CompareKeyImpl);
+ }
+
+ constexpr IntrusiveRedBlackTreeNode* FindExistingImpl(
+ IntrusiveRedBlackTreeNode const* node) const {
+ return freebsd::RB_FIND_EXISTING(const_cast<ImplType::RootType&>(m_impl.m_root),
+ const_cast<IntrusiveRedBlackTreeNode*>(node), CompareImpl);
+ }
+
+ constexpr IntrusiveRedBlackTreeNode* FindExistingKeyImpl(const_key_reference key) const {
+ return freebsd::RB_FIND_EXISTING_KEY(const_cast<ImplType::RootType&>(m_impl.m_root), key,
+ CompareKeyImpl);
}
public:
constexpr IntrusiveRedBlackTree() = default;
// Iterator accessors.
- iterator begin() {
- return iterator(this->impl.begin());
+ constexpr iterator begin() {
+ return iterator(m_impl.begin());
}
- const_iterator begin() const {
- return const_iterator(this->impl.begin());
+ constexpr const_iterator begin() const {
+ return const_iterator(m_impl.begin());
}
- iterator end() {
- return iterator(this->impl.end());
+ constexpr iterator end() {
+ return iterator(m_impl.end());
}
- const_iterator end() const {
- return const_iterator(this->impl.end());
+ constexpr const_iterator end() const {
+ return const_iterator(m_impl.end());
}
- const_iterator cbegin() const {
+ constexpr const_iterator cbegin() const {
return this->begin();
}
- const_iterator cend() const {
+ constexpr const_iterator cend() const {
return this->end();
}
- iterator iterator_to(reference ref) {
- return iterator(this->impl.iterator_to(*Traits::GetNode(std::addressof(ref))));
+ constexpr iterator iterator_to(reference ref) {
+ return iterator(m_impl.iterator_to(*Traits::GetNode(std::addressof(ref))));
}
- const_iterator iterator_to(const_reference ref) const {
- return const_iterator(this->impl.iterator_to(*Traits::GetNode(std::addressof(ref))));
+ constexpr const_iterator iterator_to(const_reference ref) const {
+ return const_iterator(m_impl.iterator_to(*Traits::GetNode(std::addressof(ref))));
}
// Content management.
- bool empty() const {
- return this->impl.empty();
+ constexpr bool empty() const {
+ return m_impl.empty();
}
- reference back() {
- return *Traits::GetParent(std::addressof(this->impl.back()));
+ constexpr reference back() {
+ return *Traits::GetParent(std::addressof(m_impl.back()));
}
- const_reference back() const {
- return *Traits::GetParent(std::addressof(this->impl.back()));
+ constexpr const_reference back() const {
+ return *Traits::GetParent(std::addressof(m_impl.back()));
}
- reference front() {
- return *Traits::GetParent(std::addressof(this->impl.front()));
+ constexpr reference front() {
+ return *Traits::GetParent(std::addressof(m_impl.front()));
}
- const_reference front() const {
- return *Traits::GetParent(std::addressof(this->impl.front()));
+ constexpr const_reference front() const {
+ return *Traits::GetParent(std::addressof(m_impl.front()));
}
- iterator erase(iterator it) {
- return iterator(this->impl.erase(it.GetImplIterator()));
+ constexpr iterator erase(iterator it) {
+ return iterator(m_impl.erase(it.GetImplIterator()));
}
- iterator insert(reference ref) {
+ constexpr iterator insert(reference ref) {
ImplType::pointer node = Traits::GetNode(std::addressof(ref));
this->InsertImpl(node);
return iterator(node);
}
- iterator find(const_reference ref) const {
+ constexpr iterator find(const_reference ref) const {
return iterator(this->FindImpl(Traits::GetNode(std::addressof(ref))));
}
- iterator nfind(const_reference ref) const {
+ constexpr iterator nfind(const_reference ref) const {
return iterator(this->NFindImpl(Traits::GetNode(std::addressof(ref))));
}
- iterator find_light(const_light_reference ref) const {
- return iterator(this->FindLightImpl(std::addressof(ref)));
+ constexpr iterator find_key(const_key_reference ref) const {
+ return iterator(this->FindKeyImpl(ref));
+ }
+
+ constexpr iterator nfind_key(const_key_reference ref) const {
+ return iterator(this->NFindKeyImpl(ref));
+ }
+
+ constexpr iterator find_existing(const_reference ref) const {
+ return iterator(this->FindExistingImpl(Traits::GetNode(std::addressof(ref))));
}
- iterator nfind_light(const_light_reference ref) const {
- return iterator(this->NFindLightImpl(std::addressof(ref)));
+ constexpr iterator find_existing_key(const_key_reference ref) const {
+ return iterator(this->FindExistingKeyImpl(ref));
}
};
-template <auto T, class Derived = impl::GetParentType<T>>
+template <auto T, class Derived = Common::impl::GetParentType<T>>
class IntrusiveRedBlackTreeMemberTraits;
template <class Parent, IntrusiveRedBlackTreeNode Parent::*Member, class Derived>
@@ -498,19 +526,16 @@ private:
return std::addressof(parent->*Member);
}
- static constexpr Derived* GetParent(IntrusiveRedBlackTreeNode* node) {
- return GetParentPointer<Member, Derived>(node);
+ static Derived* GetParent(IntrusiveRedBlackTreeNode* node) {
+ return Common::GetParentPointer<Member, Derived>(node);
}
- static constexpr Derived const* GetParent(const IntrusiveRedBlackTreeNode* node) {
- return GetParentPointer<Member, Derived>(node);
+ static Derived const* GetParent(IntrusiveRedBlackTreeNode const* node) {
+ return Common::GetParentPointer<Member, Derived>(node);
}
-
-private:
- static constexpr TypedStorage<Derived> DerivedStorage = {};
};
-template <auto T, class Derived = impl::GetParentType<T>>
+template <auto T, class Derived = Common::impl::GetParentType<T>>
class IntrusiveRedBlackTreeMemberTraitsDeferredAssert;
template <class Parent, IntrusiveRedBlackTreeNode Parent::*Member, class Derived>
@@ -521,11 +546,6 @@ public:
IntrusiveRedBlackTree<Derived, IntrusiveRedBlackTreeMemberTraitsDeferredAssert, Comparator>;
using TreeTypeImpl = impl::IntrusiveRedBlackTreeImpl;
- static constexpr bool IsValid() {
- TypedStorage<Derived> DerivedStorage = {};
- return GetParent(GetNode(GetPointer(DerivedStorage))) == GetPointer(DerivedStorage);
- }
-
private:
template <class, class, class>
friend class IntrusiveRedBlackTree;
@@ -540,30 +560,36 @@ private:
return std::addressof(parent->*Member);
}
- static constexpr Derived* GetParent(IntrusiveRedBlackTreeNode* node) {
- return GetParentPointer<Member, Derived>(node);
+ static Derived* GetParent(IntrusiveRedBlackTreeNode* node) {
+ return Common::GetParentPointer<Member, Derived>(node);
}
- static constexpr Derived const* GetParent(const IntrusiveRedBlackTreeNode* node) {
- return GetParentPointer<Member, Derived>(node);
+ static Derived const* GetParent(IntrusiveRedBlackTreeNode const* node) {
+ return Common::GetParentPointer<Member, Derived>(node);
}
};
template <class Derived>
-class IntrusiveRedBlackTreeBaseNode : public IntrusiveRedBlackTreeNode {
+class alignas(void*) IntrusiveRedBlackTreeBaseNode : public IntrusiveRedBlackTreeNode {
public:
+ using IntrusiveRedBlackTreeNode::IntrusiveRedBlackTreeNode;
+
constexpr Derived* GetPrev() {
- return static_cast<Derived*>(impl::IntrusiveRedBlackTreeImpl::GetPrev(this));
+ return static_cast<Derived*>(static_cast<IntrusiveRedBlackTreeBaseNode*>(
+ impl::IntrusiveRedBlackTreeImpl::GetPrev(this)));
}
constexpr const Derived* GetPrev() const {
- return static_cast<const Derived*>(impl::IntrusiveRedBlackTreeImpl::GetPrev(this));
+ return static_cast<const Derived*>(static_cast<const IntrusiveRedBlackTreeBaseNode*>(
+ impl::IntrusiveRedBlackTreeImpl::GetPrev(this)));
}
constexpr Derived* GetNext() {
- return static_cast<Derived*>(impl::IntrusiveRedBlackTreeImpl::GetNext(this));
+ return static_cast<Derived*>(static_cast<IntrusiveRedBlackTreeBaseNode*>(
+ impl::IntrusiveRedBlackTreeImpl::GetNext(this)));
}
constexpr const Derived* GetNext() const {
- return static_cast<const Derived*>(impl::IntrusiveRedBlackTreeImpl::GetNext(this));
+ return static_cast<const Derived*>(static_cast<const IntrusiveRedBlackTreeBaseNode*>(
+ impl::IntrusiveRedBlackTreeImpl::GetNext(this)));
}
};
@@ -581,19 +607,22 @@ private:
friend class impl::IntrusiveRedBlackTreeImpl;
static constexpr IntrusiveRedBlackTreeNode* GetNode(Derived* parent) {
- return static_cast<IntrusiveRedBlackTreeNode*>(parent);
+ return static_cast<IntrusiveRedBlackTreeNode*>(
+ static_cast<IntrusiveRedBlackTreeBaseNode<Derived>*>(parent));
}
static constexpr IntrusiveRedBlackTreeNode const* GetNode(Derived const* parent) {
- return static_cast<const IntrusiveRedBlackTreeNode*>(parent);
+ return static_cast<const IntrusiveRedBlackTreeNode*>(
+ static_cast<const IntrusiveRedBlackTreeBaseNode<Derived>*>(parent));
}
static constexpr Derived* GetParent(IntrusiveRedBlackTreeNode* node) {
- return static_cast<Derived*>(node);
+ return static_cast<Derived*>(static_cast<IntrusiveRedBlackTreeBaseNode<Derived>*>(node));
}
- static constexpr Derived const* GetParent(const IntrusiveRedBlackTreeNode* node) {
- return static_cast<const Derived*>(node);
+ static constexpr Derived const* GetParent(IntrusiveRedBlackTreeNode const* node) {
+ return static_cast<const Derived*>(
+ static_cast<const IntrusiveRedBlackTreeBaseNode<Derived>*>(node));
}
};
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
index c51c05b28..4a2462ec4 100644
--- a/src/common/logging/backend.cpp
+++ b/src/common/logging/backend.cpp
@@ -218,19 +218,17 @@ private:
Impl(const std::filesystem::path& file_backend_filename, const Filter& filter_)
: filter{filter_}, file_backend{file_backend_filename} {}
- ~Impl() {
- StopBackendThread();
- }
+ ~Impl() = default;
void StartBackendThread() {
- backend_thread = std::thread([this] {
+ backend_thread = std::jthread([this](std::stop_token stop_token) {
Common::SetCurrentThreadName("yuzu:Log");
Entry entry;
const auto write_logs = [this, &entry]() {
ForEachBackend([&entry](Backend& backend) { backend.Write(entry); });
};
- while (!stop.stop_requested()) {
- entry = message_queue.PopWait(stop.get_token());
+ while (!stop_token.stop_requested()) {
+ entry = message_queue.PopWait(stop_token);
if (entry.filename != nullptr) {
write_logs();
}
@@ -244,11 +242,6 @@ private:
});
}
- void StopBackendThread() {
- stop.request_stop();
- backend_thread.join();
- }
-
Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsigned int line_nr,
const char* function, std::string&& message) const {
using std::chrono::duration_cast;
@@ -283,10 +276,9 @@ private:
ColorConsoleBackend color_console_backend{};
FileBackend file_backend;
- std::stop_source stop;
- std::thread backend_thread;
MPSCQueue<Entry, true> message_queue{};
std::chrono::steady_clock::time_point time_origin{std::chrono::steady_clock::now()};
+ std::jthread backend_thread;
};
} // namespace
diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp
index b898a652c..4afc1369a 100644
--- a/src/common/logging/filter.cpp
+++ b/src/common/logging/filter.cpp
@@ -108,6 +108,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
SUB(Service, Migration) \
SUB(Service, Mii) \
SUB(Service, MM) \
+ SUB(Service, MNPP) \
SUB(Service, NCM) \
SUB(Service, NFC) \
SUB(Service, NFP) \
diff --git a/src/common/logging/types.h b/src/common/logging/types.h
index 9ed0c7ad6..2b6e4daa7 100644
--- a/src/common/logging/types.h
+++ b/src/common/logging/types.h
@@ -76,6 +76,7 @@ enum class Class : u8 {
Service_Migration, ///< The migration service
Service_Mii, ///< The Mii service
Service_MM, ///< The MM (Multimedia) service
+ Service_MNPP, ///< The MNPP service
Service_NCM, ///< The NCM service
Service_NFC, ///< The NFC (Near-field communication) service
Service_NFP, ///< The NFP service
diff --git a/src/common/page_table.cpp b/src/common/page_table.cpp
index 9fffd816f..4817b09f9 100644
--- a/src/common/page_table.cpp
+++ b/src/common/page_table.cpp
@@ -10,11 +10,65 @@ PageTable::PageTable() = default;
PageTable::~PageTable() noexcept = default;
-void PageTable::Resize(size_t address_space_width_in_bits, size_t page_size_in_bits) {
- const size_t num_page_table_entries{1ULL << (address_space_width_in_bits - page_size_in_bits)};
+bool PageTable::BeginTraversal(TraversalEntry& out_entry, TraversalContext& out_context,
+ u64 address) const {
+ // Setup invalid defaults.
+ out_entry.phys_addr = 0;
+ out_entry.block_size = page_size;
+ out_context.next_page = 0;
+
+ // Validate that we can read the actual entry.
+ const auto page = address / page_size;
+ if (page >= backing_addr.size()) {
+ return false;
+ }
+
+ // Validate that the entry is mapped.
+ const auto phys_addr = backing_addr[page];
+ if (phys_addr == 0) {
+ return false;
+ }
+
+ // Populate the results.
+ out_entry.phys_addr = phys_addr + address;
+ out_context.next_page = page + 1;
+ out_context.next_offset = address + page_size;
+
+ return true;
+}
+
+bool PageTable::ContinueTraversal(TraversalEntry& out_entry, TraversalContext& context) const {
+ // Setup invalid defaults.
+ out_entry.phys_addr = 0;
+ out_entry.block_size = page_size;
+
+ // Validate that we can read the actual entry.
+ const auto page = context.next_page;
+ if (page >= backing_addr.size()) {
+ return false;
+ }
+
+ // Validate that the entry is mapped.
+ const auto phys_addr = backing_addr[page];
+ if (phys_addr == 0) {
+ return false;
+ }
+
+ // Populate the results.
+ out_entry.phys_addr = phys_addr + context.next_offset;
+ context.next_page = page + 1;
+ context.next_offset += page_size;
+
+ return true;
+}
+
+void PageTable::Resize(std::size_t address_space_width_in_bits, std::size_t page_size_in_bits) {
+ const std::size_t num_page_table_entries{1ULL
+ << (address_space_width_in_bits - page_size_in_bits)};
pointers.resize(num_page_table_entries);
backing_addr.resize(num_page_table_entries);
current_address_space_width_in_bits = address_space_width_in_bits;
+ page_size = 1ULL << page_size_in_bits;
}
} // namespace Common
diff --git a/src/common/page_table.h b/src/common/page_table.h
index 8267e8b4d..82d91e9f3 100644
--- a/src/common/page_table.h
+++ b/src/common/page_table.h
@@ -27,6 +27,16 @@ enum class PageType : u8 {
* mimics the way a real CPU page table works.
*/
struct PageTable {
+ struct TraversalEntry {
+ u64 phys_addr{};
+ std::size_t block_size{};
+ };
+
+ struct TraversalContext {
+ u64 next_page{};
+ u64 next_offset{};
+ };
+
/// Number of bits reserved for attribute tagging.
/// This can be at most the guaranteed alignment of the pointers in the page table.
static constexpr int ATTRIBUTE_BITS = 2;
@@ -89,6 +99,10 @@ struct PageTable {
PageTable(PageTable&&) noexcept = default;
PageTable& operator=(PageTable&&) noexcept = default;
+ bool BeginTraversal(TraversalEntry& out_entry, TraversalContext& out_context,
+ u64 address) const;
+ bool ContinueTraversal(TraversalEntry& out_entry, TraversalContext& context) const;
+
/**
* Resizes the page table to be able to accommodate enough pages within
* a given address space.
@@ -96,9 +110,9 @@ struct PageTable {
* @param address_space_width_in_bits The address size width in bits.
* @param page_size_in_bits The page size in bits.
*/
- void Resize(size_t address_space_width_in_bits, size_t page_size_in_bits);
+ void Resize(std::size_t address_space_width_in_bits, std::size_t page_size_in_bits);
- size_t GetAddressSpaceBits() const {
+ std::size_t GetAddressSpaceBits() const {
return current_address_space_width_in_bits;
}
@@ -110,9 +124,11 @@ struct PageTable {
VirtualBuffer<u64> backing_addr;
- size_t current_address_space_width_in_bits;
+ std::size_t current_address_space_width_in_bits{};
+
+ u8* fastmem_arena{};
- u8* fastmem_arena;
+ std::size_t page_size{};
};
} // namespace Common
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 6964a8273..877e0faa4 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -167,6 +167,7 @@ void RestoreGlobalState(bool is_powered_on) {
// Core
values.use_multi_core.SetGlobal(true);
+ values.use_extended_memory_layout.SetGlobal(true);
// CPU
values.cpu_accuracy.SetGlobal(true);
@@ -175,6 +176,7 @@ void RestoreGlobalState(bool is_powered_on) {
values.cpuopt_unsafe_ignore_standard_fpcr.SetGlobal(true);
values.cpuopt_unsafe_inaccurate_nan.SetGlobal(true);
values.cpuopt_unsafe_fastmem_check.SetGlobal(true);
+ values.cpuopt_unsafe_ignore_global_monitor.SetGlobal(true);
// Renderer
values.renderer_backend.SetGlobal(true);
diff --git a/src/common/settings.h b/src/common/settings.h
index 9bee6e10f..a37d83fb3 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -466,6 +466,7 @@ struct Values {
// Core
Setting<bool> use_multi_core{true, "use_multi_core"};
+ Setting<bool> use_extended_memory_layout{false, "use_extended_memory_layout"};
// Cpu
RangedSetting<CPUAccuracy> cpu_accuracy{CPUAccuracy::Auto, CPUAccuracy::Auto,
@@ -483,12 +484,15 @@ struct Values {
BasicSetting<bool> cpuopt_misc_ir{true, "cpuopt_misc_ir"};
BasicSetting<bool> cpuopt_reduce_misalign_checks{true, "cpuopt_reduce_misalign_checks"};
BasicSetting<bool> cpuopt_fastmem{true, "cpuopt_fastmem"};
+ BasicSetting<bool> cpuopt_fastmem_exclusives{true, "cpuopt_fastmem_exclusives"};
+ BasicSetting<bool> cpuopt_recompile_exclusives{true, "cpuopt_recompile_exclusives"};
Setting<bool> cpuopt_unsafe_unfuse_fma{true, "cpuopt_unsafe_unfuse_fma"};
Setting<bool> cpuopt_unsafe_reduce_fp_error{true, "cpuopt_unsafe_reduce_fp_error"};
Setting<bool> cpuopt_unsafe_ignore_standard_fpcr{true, "cpuopt_unsafe_ignore_standard_fpcr"};
Setting<bool> cpuopt_unsafe_inaccurate_nan{true, "cpuopt_unsafe_inaccurate_nan"};
Setting<bool> cpuopt_unsafe_fastmem_check{true, "cpuopt_unsafe_fastmem_check"};
+ Setting<bool> cpuopt_unsafe_ignore_global_monitor{true, "cpuopt_unsafe_ignore_global_monitor"};
// Renderer
RangedSetting<RendererBackend> renderer_backend{
diff --git a/src/common/telemetry.cpp b/src/common/telemetry.cpp
index 6241d08b3..98c82cd17 100644
--- a/src/common/telemetry.cpp
+++ b/src/common/telemetry.cpp
@@ -55,22 +55,50 @@ void AppendBuildInfo(FieldCollection& fc) {
void AppendCPUInfo(FieldCollection& fc) {
#ifdef ARCHITECTURE_x86_64
- fc.AddField(FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string);
- fc.AddField(FieldType::UserSystem, "CPU_BrandString", Common::GetCPUCaps().brand_string);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX512", Common::GetCPUCaps().avx512);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI1", Common::GetCPUCaps().bmi1);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI2", Common::GetCPUCaps().bmi2);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA", Common::GetCPUCaps().fma);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA4", Common::GetCPUCaps().fma4);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE", Common::GetCPUCaps().sse);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE2", Common::GetCPUCaps().sse2);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE3", Common::GetCPUCaps().sse3);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSSE3", Common::GetCPUCaps().ssse3);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE41", Common::GetCPUCaps().sse4_1);
- fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_SSE42", Common::GetCPUCaps().sse4_2);
+
+ const auto& caps = Common::GetCPUCaps();
+ const auto add_field = [&fc](std::string_view field_name, const auto& field_value) {
+ fc.AddField(FieldType::UserSystem, field_name, field_value);
+ };
+ add_field("CPU_Model", caps.cpu_string);
+ add_field("CPU_BrandString", caps.brand_string);
+
+ add_field("CPU_Extension_x64_SSE", caps.sse);
+ add_field("CPU_Extension_x64_SSE2", caps.sse2);
+ add_field("CPU_Extension_x64_SSE3", caps.sse3);
+ add_field("CPU_Extension_x64_SSSE3", caps.ssse3);
+ add_field("CPU_Extension_x64_SSE41", caps.sse4_1);
+ add_field("CPU_Extension_x64_SSE42", caps.sse4_2);
+
+ add_field("CPU_Extension_x64_AVX", caps.avx);
+ add_field("CPU_Extension_x64_AVX_VNNI", caps.avx_vnni);
+ add_field("CPU_Extension_x64_AVX2", caps.avx2);
+
+ // Skylake-X/SP level AVX512, for compatibility with the previous telemetry field
+ add_field("CPU_Extension_x64_AVX512",
+ caps.avx512f && caps.avx512cd && caps.avx512vl && caps.avx512dq && caps.avx512bw);
+
+ add_field("CPU_Extension_x64_AVX512F", caps.avx512f);
+ add_field("CPU_Extension_x64_AVX512CD", caps.avx512cd);
+ add_field("CPU_Extension_x64_AVX512VL", caps.avx512vl);
+ add_field("CPU_Extension_x64_AVX512DQ", caps.avx512dq);
+ add_field("CPU_Extension_x64_AVX512BW", caps.avx512bw);
+ add_field("CPU_Extension_x64_AVX512BITALG", caps.avx512bitalg);
+ add_field("CPU_Extension_x64_AVX512VBMI", caps.avx512vbmi);
+
+ add_field("CPU_Extension_x64_AES", caps.aes);
+ add_field("CPU_Extension_x64_BMI1", caps.bmi1);
+ add_field("CPU_Extension_x64_BMI2", caps.bmi2);
+ add_field("CPU_Extension_x64_F16C", caps.f16c);
+ add_field("CPU_Extension_x64_FMA", caps.fma);
+ add_field("CPU_Extension_x64_FMA4", caps.fma4);
+ add_field("CPU_Extension_x64_GFNI", caps.gfni);
+ add_field("CPU_Extension_x64_INVARIANT_TSC", caps.invariant_tsc);
+ add_field("CPU_Extension_x64_LZCNT", caps.lzcnt);
+ add_field("CPU_Extension_x64_MOVBE", caps.movbe);
+ add_field("CPU_Extension_x64_PCLMULQDQ", caps.pclmulqdq);
+ add_field("CPU_Extension_x64_POPCNT", caps.popcnt);
+ add_field("CPU_Extension_x64_SHA", caps.sha);
#else
fc.AddField(FieldType::UserSystem, "CPU_Model", "Other");
#endif
diff --git a/src/common/telemetry.h b/src/common/telemetry.h
index 49186e848..3524c857e 100644
--- a/src/common/telemetry.h
+++ b/src/common/telemetry.h
@@ -8,6 +8,8 @@
#include <map>
#include <memory>
#include <string>
+#include <string_view>
+#include "common/common_funcs.h"
#include "common/common_types.h"
namespace Common::Telemetry {
@@ -28,7 +30,7 @@ struct VisitorInterface;
/**
* Interface class for telemetry data fields.
*/
-class FieldInterface : NonCopyable {
+class FieldInterface {
public:
virtual ~FieldInterface() = default;
@@ -52,14 +54,15 @@ public:
template <typename T>
class Field : public FieldInterface {
public:
- Field(FieldType type_, std::string name_, T value_)
- : name(std::move(name_)), type(type_), value(std::move(value_)) {}
+ YUZU_NON_COPYABLE(Field);
- Field(const Field&) = default;
- Field& operator=(const Field&) = default;
+ Field(FieldType type_, std::string_view name_, T value_)
+ : name(name_), type(type_), value(std::move(value_)) {}
- Field(Field&&) = default;
- Field& operator=(Field&& other) = default;
+ ~Field() override = default;
+
+ Field(Field&&) noexcept = default;
+ Field& operator=(Field&& other) noexcept = default;
void Accept(VisitorInterface& visitor) const override;
@@ -98,9 +101,15 @@ private:
/**
* Collection of data fields that have been logged.
*/
-class FieldCollection final : NonCopyable {
+class FieldCollection final {
public:
+ YUZU_NON_COPYABLE(FieldCollection);
+
FieldCollection() = default;
+ ~FieldCollection() = default;
+
+ FieldCollection(FieldCollection&&) noexcept = default;
+ FieldCollection& operator=(FieldCollection&&) noexcept = default;
/**
* Accept method for the visitor pattern, visits each field in the collection.
@@ -115,7 +124,7 @@ public:
* @param value Value for the field to add.
*/
template <typename T>
- void AddField(FieldType type, const char* name, T value) {
+ void AddField(FieldType type, std::string_view name, T value) {
return AddField(std::make_unique<Field<T>>(type, name, std::move(value)));
}
@@ -133,7 +142,7 @@ private:
* Telemetry fields visitor interface class. A backend to log to a web service should implement
* this interface.
*/
-struct VisitorInterface : NonCopyable {
+struct VisitorInterface {
virtual ~VisitorInterface() = default;
virtual void Visit(const Field<bool>& field) = 0;
@@ -160,8 +169,11 @@ struct VisitorInterface : NonCopyable {
* Empty implementation of VisitorInterface that drops all fields. Used when a functional
* backend implementation is not available.
*/
-struct NullVisitor : public VisitorInterface {
- ~NullVisitor() = default;
+struct NullVisitor final : public VisitorInterface {
+ YUZU_NON_COPYABLE(NullVisitor);
+
+ NullVisitor() = default;
+ ~NullVisitor() override = default;
void Visit(const Field<bool>& /*field*/) override {}
void Visit(const Field<double>& /*field*/) override {}
diff --git a/src/common/tree.h b/src/common/tree.h
index 18faa4a48..28370e343 100644
--- a/src/common/tree.h
+++ b/src/common/tree.h
@@ -43,294 +43,265 @@
* The maximum height of a red-black tree is 2lg (n+1).
*/
-#include "common/assert.h"
+namespace Common::freebsd {
-namespace Common {
+enum class RBColor {
+ RB_BLACK = 0,
+ RB_RED = 1,
+};
+
+#pragma pack(push, 4)
template <typename T>
-class RBHead {
+class RBEntry {
public:
- [[nodiscard]] T* Root() {
- return rbh_root;
- }
+ constexpr RBEntry() = default;
- [[nodiscard]] const T* Root() const {
- return rbh_root;
+ [[nodiscard]] constexpr T* Left() {
+ return m_rbe_left;
}
-
- void SetRoot(T* root) {
- rbh_root = root;
+ [[nodiscard]] constexpr const T* Left() const {
+ return m_rbe_left;
}
- [[nodiscard]] bool IsEmpty() const {
- return Root() == nullptr;
+ constexpr void SetLeft(T* e) {
+ m_rbe_left = e;
}
-private:
- T* rbh_root = nullptr;
-};
-
-enum class EntryColor {
- Black,
- Red,
-};
-
-template <typename T>
-class RBEntry {
-public:
- [[nodiscard]] T* Left() {
- return rbe_left;
+ [[nodiscard]] constexpr T* Right() {
+ return m_rbe_right;
}
-
- [[nodiscard]] const T* Left() const {
- return rbe_left;
+ [[nodiscard]] constexpr const T* Right() const {
+ return m_rbe_right;
}
- void SetLeft(T* left) {
- rbe_left = left;
+ constexpr void SetRight(T* e) {
+ m_rbe_right = e;
}
- [[nodiscard]] T* Right() {
- return rbe_right;
+ [[nodiscard]] constexpr T* Parent() {
+ return m_rbe_parent;
}
-
- [[nodiscard]] const T* Right() const {
- return rbe_right;
+ [[nodiscard]] constexpr const T* Parent() const {
+ return m_rbe_parent;
}
- void SetRight(T* right) {
- rbe_right = right;
+ constexpr void SetParent(T* e) {
+ m_rbe_parent = e;
}
- [[nodiscard]] T* Parent() {
- return rbe_parent;
+ [[nodiscard]] constexpr bool IsBlack() const {
+ return m_rbe_color == RBColor::RB_BLACK;
}
-
- [[nodiscard]] const T* Parent() const {
- return rbe_parent;
+ [[nodiscard]] constexpr bool IsRed() const {
+ return m_rbe_color == RBColor::RB_RED;
}
-
- void SetParent(T* parent) {
- rbe_parent = parent;
+ [[nodiscard]] constexpr RBColor Color() const {
+ return m_rbe_color;
}
- [[nodiscard]] bool IsBlack() const {
- return rbe_color == EntryColor::Black;
+ constexpr void SetColor(RBColor c) {
+ m_rbe_color = c;
}
- [[nodiscard]] bool IsRed() const {
- return rbe_color == EntryColor::Red;
- }
+private:
+ T* m_rbe_left{};
+ T* m_rbe_right{};
+ T* m_rbe_parent{};
+ RBColor m_rbe_color{RBColor::RB_BLACK};
+};
+#pragma pack(pop)
- [[nodiscard]] EntryColor Color() const {
- return rbe_color;
- }
+template <typename T>
+struct CheckRBEntry {
+ static constexpr bool value = false;
+};
+template <typename T>
+struct CheckRBEntry<RBEntry<T>> {
+ static constexpr bool value = true;
+};
- void SetColor(EntryColor color) {
- rbe_color = color;
- }
+template <typename T>
+concept IsRBEntry = CheckRBEntry<T>::value;
+template <typename T>
+concept HasRBEntry = requires(T& t, const T& ct) {
+ { t.GetRBEntry() } -> std::same_as<RBEntry<T>&>;
+ { ct.GetRBEntry() } -> std::same_as<const RBEntry<T>&>;
+};
+
+template <typename T>
+requires HasRBEntry<T>
+class RBHead {
private:
- T* rbe_left = nullptr;
- T* rbe_right = nullptr;
- T* rbe_parent = nullptr;
- EntryColor rbe_color{};
+ T* m_rbh_root = nullptr;
+
+public:
+ [[nodiscard]] constexpr T* Root() {
+ return m_rbh_root;
+ }
+ [[nodiscard]] constexpr const T* Root() const {
+ return m_rbh_root;
+ }
+ constexpr void SetRoot(T* root) {
+ m_rbh_root = root;
+ }
+
+ [[nodiscard]] constexpr bool IsEmpty() const {
+ return this->Root() == nullptr;
+ }
};
-template <typename Node>
-[[nodiscard]] RBEntry<Node>& RB_ENTRY(Node* node) {
- return node->GetEntry();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr RBEntry<T>& RB_ENTRY(T* t) {
+ return t->GetRBEntry();
}
-
-template <typename Node>
-[[nodiscard]] const RBEntry<Node>& RB_ENTRY(const Node* node) {
- return node->GetEntry();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr const RBEntry<T>& RB_ENTRY(const T* t) {
+ return t->GetRBEntry();
}
-template <typename Node>
-[[nodiscard]] Node* RB_PARENT(Node* node) {
- return RB_ENTRY(node).Parent();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr T* RB_LEFT(T* t) {
+ return RB_ENTRY(t).Left();
}
-
-template <typename Node>
-[[nodiscard]] const Node* RB_PARENT(const Node* node) {
- return RB_ENTRY(node).Parent();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr const T* RB_LEFT(const T* t) {
+ return RB_ENTRY(t).Left();
}
-template <typename Node>
-void RB_SET_PARENT(Node* node, Node* parent) {
- return RB_ENTRY(node).SetParent(parent);
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr T* RB_RIGHT(T* t) {
+ return RB_ENTRY(t).Right();
}
-
-template <typename Node>
-[[nodiscard]] Node* RB_LEFT(Node* node) {
- return RB_ENTRY(node).Left();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr const T* RB_RIGHT(const T* t) {
+ return RB_ENTRY(t).Right();
}
-template <typename Node>
-[[nodiscard]] const Node* RB_LEFT(const Node* node) {
- return RB_ENTRY(node).Left();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr T* RB_PARENT(T* t) {
+ return RB_ENTRY(t).Parent();
}
-
-template <typename Node>
-void RB_SET_LEFT(Node* node, Node* left) {
- return RB_ENTRY(node).SetLeft(left);
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr const T* RB_PARENT(const T* t) {
+ return RB_ENTRY(t).Parent();
}
-template <typename Node>
-[[nodiscard]] Node* RB_RIGHT(Node* node) {
- return RB_ENTRY(node).Right();
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET_LEFT(T* t, T* e) {
+ RB_ENTRY(t).SetLeft(e);
}
-
-template <typename Node>
-[[nodiscard]] const Node* RB_RIGHT(const Node* node) {
- return RB_ENTRY(node).Right();
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET_RIGHT(T* t, T* e) {
+ RB_ENTRY(t).SetRight(e);
}
-
-template <typename Node>
-void RB_SET_RIGHT(Node* node, Node* right) {
- return RB_ENTRY(node).SetRight(right);
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET_PARENT(T* t, T* e) {
+ RB_ENTRY(t).SetParent(e);
}
-template <typename Node>
-[[nodiscard]] bool RB_IS_BLACK(const Node* node) {
- return RB_ENTRY(node).IsBlack();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr bool RB_IS_BLACK(const T* t) {
+ return RB_ENTRY(t).IsBlack();
}
-
-template <typename Node>
-[[nodiscard]] bool RB_IS_RED(const Node* node) {
- return RB_ENTRY(node).IsRed();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr bool RB_IS_RED(const T* t) {
+ return RB_ENTRY(t).IsRed();
}
-template <typename Node>
-[[nodiscard]] EntryColor RB_COLOR(const Node* node) {
- return RB_ENTRY(node).Color();
+template <typename T>
+requires HasRBEntry<T>
+[[nodiscard]] constexpr RBColor RB_COLOR(const T* t) {
+ return RB_ENTRY(t).Color();
}
-template <typename Node>
-void RB_SET_COLOR(Node* node, EntryColor color) {
- return RB_ENTRY(node).SetColor(color);
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET_COLOR(T* t, RBColor c) {
+ RB_ENTRY(t).SetColor(c);
}
-template <typename Node>
-void RB_SET(Node* node, Node* parent) {
- auto& entry = RB_ENTRY(node);
- entry.SetParent(parent);
- entry.SetLeft(nullptr);
- entry.SetRight(nullptr);
- entry.SetColor(EntryColor::Red);
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET(T* elm, T* parent) {
+ auto& rb_entry = RB_ENTRY(elm);
+ rb_entry.SetParent(parent);
+ rb_entry.SetLeft(nullptr);
+ rb_entry.SetRight(nullptr);
+ rb_entry.SetColor(RBColor::RB_RED);
}
-template <typename Node>
-void RB_SET_BLACKRED(Node* black, Node* red) {
- RB_SET_COLOR(black, EntryColor::Black);
- RB_SET_COLOR(red, EntryColor::Red);
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_SET_BLACKRED(T* black, T* red) {
+ RB_SET_COLOR(black, RBColor::RB_BLACK);
+ RB_SET_COLOR(red, RBColor::RB_RED);
}
-template <typename Node>
-void RB_ROTATE_LEFT(RBHead<Node>* head, Node* elm, Node*& tmp) {
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_ROTATE_LEFT(RBHead<T>& head, T* elm, T*& tmp) {
tmp = RB_RIGHT(elm);
- RB_SET_RIGHT(elm, RB_LEFT(tmp));
- if (RB_RIGHT(elm) != nullptr) {
+ if (RB_SET_RIGHT(elm, RB_LEFT(tmp)); RB_RIGHT(elm) != nullptr) {
RB_SET_PARENT(RB_LEFT(tmp), elm);
}
- RB_SET_PARENT(tmp, RB_PARENT(elm));
- if (RB_PARENT(tmp) != nullptr) {
+ if (RB_SET_PARENT(tmp, RB_PARENT(elm)); RB_PARENT(tmp) != nullptr) {
if (elm == RB_LEFT(RB_PARENT(elm))) {
RB_SET_LEFT(RB_PARENT(elm), tmp);
} else {
RB_SET_RIGHT(RB_PARENT(elm), tmp);
}
} else {
- head->SetRoot(tmp);
+ head.SetRoot(tmp);
}
RB_SET_LEFT(tmp, elm);
RB_SET_PARENT(elm, tmp);
}
-template <typename Node>
-void RB_ROTATE_RIGHT(RBHead<Node>* head, Node* elm, Node*& tmp) {
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_ROTATE_RIGHT(RBHead<T>& head, T* elm, T*& tmp) {
tmp = RB_LEFT(elm);
- RB_SET_LEFT(elm, RB_RIGHT(tmp));
- if (RB_LEFT(elm) != nullptr) {
+ if (RB_SET_LEFT(elm, RB_RIGHT(tmp)); RB_LEFT(elm) != nullptr) {
RB_SET_PARENT(RB_RIGHT(tmp), elm);
}
- RB_SET_PARENT(tmp, RB_PARENT(elm));
- if (RB_PARENT(tmp) != nullptr) {
+ if (RB_SET_PARENT(tmp, RB_PARENT(elm)); RB_PARENT(tmp) != nullptr) {
if (elm == RB_LEFT(RB_PARENT(elm))) {
RB_SET_LEFT(RB_PARENT(elm), tmp);
} else {
RB_SET_RIGHT(RB_PARENT(elm), tmp);
}
} else {
- head->SetRoot(tmp);
+ head.SetRoot(tmp);
}
RB_SET_RIGHT(tmp, elm);
RB_SET_PARENT(elm, tmp);
}
-template <typename Node>
-void RB_INSERT_COLOR(RBHead<Node>* head, Node* elm) {
- Node* parent = nullptr;
- Node* tmp = nullptr;
-
- while ((parent = RB_PARENT(elm)) != nullptr && RB_IS_RED(parent)) {
- Node* gparent = RB_PARENT(parent);
- if (parent == RB_LEFT(gparent)) {
- tmp = RB_RIGHT(gparent);
- if (tmp && RB_IS_RED(tmp)) {
- RB_SET_COLOR(tmp, EntryColor::Black);
- RB_SET_BLACKRED(parent, gparent);
- elm = gparent;
- continue;
- }
-
- if (RB_RIGHT(parent) == elm) {
- RB_ROTATE_LEFT(head, parent, tmp);
- tmp = parent;
- parent = elm;
- elm = tmp;
- }
-
- RB_SET_BLACKRED(parent, gparent);
- RB_ROTATE_RIGHT(head, gparent, tmp);
- } else {
- tmp = RB_LEFT(gparent);
- if (tmp && RB_IS_RED(tmp)) {
- RB_SET_COLOR(tmp, EntryColor::Black);
- RB_SET_BLACKRED(parent, gparent);
- elm = gparent;
- continue;
- }
-
- if (RB_LEFT(parent) == elm) {
- RB_ROTATE_RIGHT(head, parent, tmp);
- tmp = parent;
- parent = elm;
- elm = tmp;
- }
-
- RB_SET_BLACKRED(parent, gparent);
- RB_ROTATE_LEFT(head, gparent, tmp);
- }
- }
-
- RB_SET_COLOR(head->Root(), EntryColor::Black);
-}
-
-template <typename Node>
-void RB_REMOVE_COLOR(RBHead<Node>* head, Node* parent, Node* elm) {
- Node* tmp;
- while ((elm == nullptr || RB_IS_BLACK(elm)) && elm != head->Root() && parent != nullptr) {
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_REMOVE_COLOR(RBHead<T>& head, T* parent, T* elm) {
+ T* tmp;
+ while ((elm == nullptr || RB_IS_BLACK(elm)) && elm != head.Root()) {
if (RB_LEFT(parent) == elm) {
tmp = RB_RIGHT(parent);
- if (!tmp) {
- ASSERT_MSG(false, "tmp is invalid!");
- break;
- }
if (RB_IS_RED(tmp)) {
RB_SET_BLACKRED(tmp, parent);
RB_ROTATE_LEFT(head, parent, tmp);
@@ -339,29 +310,29 @@ void RB_REMOVE_COLOR(RBHead<Node>* head, Node* parent, Node* elm) {
if ((RB_LEFT(tmp) == nullptr || RB_IS_BLACK(RB_LEFT(tmp))) &&
(RB_RIGHT(tmp) == nullptr || RB_IS_BLACK(RB_RIGHT(tmp)))) {
- RB_SET_COLOR(tmp, EntryColor::Red);
+ RB_SET_COLOR(tmp, RBColor::RB_RED);
elm = parent;
parent = RB_PARENT(elm);
} else {
if (RB_RIGHT(tmp) == nullptr || RB_IS_BLACK(RB_RIGHT(tmp))) {
- Node* oleft;
+ T* oleft;
if ((oleft = RB_LEFT(tmp)) != nullptr) {
- RB_SET_COLOR(oleft, EntryColor::Black);
+ RB_SET_COLOR(oleft, RBColor::RB_BLACK);
}
- RB_SET_COLOR(tmp, EntryColor::Red);
+ RB_SET_COLOR(tmp, RBColor::RB_RED);
RB_ROTATE_RIGHT(head, tmp, oleft);
tmp = RB_RIGHT(parent);
}
RB_SET_COLOR(tmp, RB_COLOR(parent));
- RB_SET_COLOR(parent, EntryColor::Black);
+ RB_SET_COLOR(parent, RBColor::RB_BLACK);
if (RB_RIGHT(tmp)) {
- RB_SET_COLOR(RB_RIGHT(tmp), EntryColor::Black);
+ RB_SET_COLOR(RB_RIGHT(tmp), RBColor::RB_BLACK);
}
RB_ROTATE_LEFT(head, parent, tmp);
- elm = head->Root();
+ elm = head.Root();
break;
}
} else {
@@ -372,68 +343,56 @@ void RB_REMOVE_COLOR(RBHead<Node>* head, Node* parent, Node* elm) {
tmp = RB_LEFT(parent);
}
- if (!tmp) {
- ASSERT_MSG(false, "tmp is invalid!");
- break;
- }
-
if ((RB_LEFT(tmp) == nullptr || RB_IS_BLACK(RB_LEFT(tmp))) &&
(RB_RIGHT(tmp) == nullptr || RB_IS_BLACK(RB_RIGHT(tmp)))) {
- RB_SET_COLOR(tmp, EntryColor::Red);
+ RB_SET_COLOR(tmp, RBColor::RB_RED);
elm = parent;
parent = RB_PARENT(elm);
} else {
if (RB_LEFT(tmp) == nullptr || RB_IS_BLACK(RB_LEFT(tmp))) {
- Node* oright;
+ T* oright;
if ((oright = RB_RIGHT(tmp)) != nullptr) {
- RB_SET_COLOR(oright, EntryColor::Black);
+ RB_SET_COLOR(oright, RBColor::RB_BLACK);
}
- RB_SET_COLOR(tmp, EntryColor::Red);
+ RB_SET_COLOR(tmp, RBColor::RB_RED);
RB_ROTATE_LEFT(head, tmp, oright);
tmp = RB_LEFT(parent);
}
RB_SET_COLOR(tmp, RB_COLOR(parent));
- RB_SET_COLOR(parent, EntryColor::Black);
+ RB_SET_COLOR(parent, RBColor::RB_BLACK);
if (RB_LEFT(tmp)) {
- RB_SET_COLOR(RB_LEFT(tmp), EntryColor::Black);
+ RB_SET_COLOR(RB_LEFT(tmp), RBColor::RB_BLACK);
}
RB_ROTATE_RIGHT(head, parent, tmp);
- elm = head->Root();
+ elm = head.Root();
break;
}
}
}
if (elm) {
- RB_SET_COLOR(elm, EntryColor::Black);
+ RB_SET_COLOR(elm, RBColor::RB_BLACK);
}
}
-template <typename Node>
-Node* RB_REMOVE(RBHead<Node>* head, Node* elm) {
- Node* child = nullptr;
- Node* parent = nullptr;
- Node* old = elm;
- EntryColor color{};
-
- const auto finalize = [&] {
- if (color == EntryColor::Black) {
- RB_REMOVE_COLOR(head, parent, child);
- }
-
- return old;
- };
+template <typename T>
+requires HasRBEntry<T>
+constexpr T* RB_REMOVE(RBHead<T>& head, T* elm) {
+ T* child = nullptr;
+ T* parent = nullptr;
+ T* old = elm;
+ RBColor color = RBColor::RB_BLACK;
if (RB_LEFT(elm) == nullptr) {
child = RB_RIGHT(elm);
} else if (RB_RIGHT(elm) == nullptr) {
child = RB_LEFT(elm);
} else {
- Node* left;
+ T* left;
elm = RB_RIGHT(elm);
while ((left = RB_LEFT(elm)) != nullptr) {
elm = left;
@@ -446,6 +405,7 @@ Node* RB_REMOVE(RBHead<Node>* head, Node* elm) {
if (child) {
RB_SET_PARENT(child, parent);
}
+
if (parent) {
if (RB_LEFT(parent) == elm) {
RB_SET_LEFT(parent, child);
@@ -453,14 +413,14 @@ Node* RB_REMOVE(RBHead<Node>* head, Node* elm) {
RB_SET_RIGHT(parent, child);
}
} else {
- head->SetRoot(child);
+ head.SetRoot(child);
}
if (RB_PARENT(elm) == old) {
parent = elm;
}
- elm->SetEntry(old->GetEntry());
+ elm->SetRBEntry(old->GetRBEntry());
if (RB_PARENT(old)) {
if (RB_LEFT(RB_PARENT(old)) == old) {
@@ -469,17 +429,24 @@ Node* RB_REMOVE(RBHead<Node>* head, Node* elm) {
RB_SET_RIGHT(RB_PARENT(old), elm);
}
} else {
- head->SetRoot(elm);
+ head.SetRoot(elm);
}
+
RB_SET_PARENT(RB_LEFT(old), elm);
+
if (RB_RIGHT(old)) {
RB_SET_PARENT(RB_RIGHT(old), elm);
}
+
if (parent) {
left = parent;
}
- return finalize();
+ if (color == RBColor::RB_BLACK) {
+ RB_REMOVE_COLOR(head, parent, child);
+ }
+
+ return old;
}
parent = RB_PARENT(elm);
@@ -495,17 +462,69 @@ Node* RB_REMOVE(RBHead<Node>* head, Node* elm) {
RB_SET_RIGHT(parent, child);
}
} else {
- head->SetRoot(child);
+ head.SetRoot(child);
+ }
+
+ if (color == RBColor::RB_BLACK) {
+ RB_REMOVE_COLOR(head, parent, child);
+ }
+
+ return old;
+}
+
+template <typename T>
+requires HasRBEntry<T>
+constexpr void RB_INSERT_COLOR(RBHead<T>& head, T* elm) {
+ T *parent = nullptr, *tmp = nullptr;
+ while ((parent = RB_PARENT(elm)) != nullptr && RB_IS_RED(parent)) {
+ T* gparent = RB_PARENT(parent);
+ if (parent == RB_LEFT(gparent)) {
+ tmp = RB_RIGHT(gparent);
+ if (tmp && RB_IS_RED(tmp)) {
+ RB_SET_COLOR(tmp, RBColor::RB_BLACK);
+ RB_SET_BLACKRED(parent, gparent);
+ elm = gparent;
+ continue;
+ }
+
+ if (RB_RIGHT(parent) == elm) {
+ RB_ROTATE_LEFT(head, parent, tmp);
+ tmp = parent;
+ parent = elm;
+ elm = tmp;
+ }
+
+ RB_SET_BLACKRED(parent, gparent);
+ RB_ROTATE_RIGHT(head, gparent, tmp);
+ } else {
+ tmp = RB_LEFT(gparent);
+ if (tmp && RB_IS_RED(tmp)) {
+ RB_SET_COLOR(tmp, RBColor::RB_BLACK);
+ RB_SET_BLACKRED(parent, gparent);
+ elm = gparent;
+ continue;
+ }
+
+ if (RB_LEFT(parent) == elm) {
+ RB_ROTATE_RIGHT(head, parent, tmp);
+ tmp = parent;
+ parent = elm;
+ elm = tmp;
+ }
+
+ RB_SET_BLACKRED(parent, gparent);
+ RB_ROTATE_LEFT(head, gparent, tmp);
+ }
}
- return finalize();
+ RB_SET_COLOR(head.Root(), RBColor::RB_BLACK);
}
-// Inserts a node into the RB tree
-template <typename Node, typename CompareFunction>
-Node* RB_INSERT(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
- Node* parent = nullptr;
- Node* tmp = head->Root();
+template <typename T, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_INSERT(RBHead<T>& head, T* elm, Compare cmp) {
+ T* parent = nullptr;
+ T* tmp = head.Root();
int comp = 0;
while (tmp) {
@@ -529,17 +548,17 @@ Node* RB_INSERT(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
RB_SET_RIGHT(parent, elm);
}
} else {
- head->SetRoot(elm);
+ head.SetRoot(elm);
}
RB_INSERT_COLOR(head, elm);
return nullptr;
}
-// Finds the node with the same key as elm
-template <typename Node, typename CompareFunction>
-Node* RB_FIND(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
- Node* tmp = head->Root();
+template <typename T, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_FIND(RBHead<T>& head, T* elm, Compare cmp) {
+ T* tmp = head.Root();
while (tmp) {
const int comp = cmp(elm, tmp);
@@ -555,11 +574,11 @@ Node* RB_FIND(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
return nullptr;
}
-// Finds the first node greater than or equal to the search key
-template <typename Node, typename CompareFunction>
-Node* RB_NFIND(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
- Node* tmp = head->Root();
- Node* res = nullptr;
+template <typename T, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_NFIND(RBHead<T>& head, T* elm, Compare cmp) {
+ T* tmp = head.Root();
+ T* res = nullptr;
while (tmp) {
const int comp = cmp(elm, tmp);
@@ -576,13 +595,13 @@ Node* RB_NFIND(RBHead<Node>* head, Node* elm, CompareFunction cmp) {
return res;
}
-// Finds the node with the same key as lelm
-template <typename Node, typename CompareFunction>
-Node* RB_FIND_LIGHT(RBHead<Node>* head, const void* lelm, CompareFunction lcmp) {
- Node* tmp = head->Root();
+template <typename T, typename U, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_FIND_KEY(RBHead<T>& head, const U& key, Compare cmp) {
+ T* tmp = head.Root();
while (tmp) {
- const int comp = lcmp(lelm, tmp);
+ const int comp = cmp(key, tmp);
if (comp < 0) {
tmp = RB_LEFT(tmp);
} else if (comp > 0) {
@@ -595,14 +614,14 @@ Node* RB_FIND_LIGHT(RBHead<Node>* head, const void* lelm, CompareFunction lcmp)
return nullptr;
}
-// Finds the first node greater than or equal to the search key
-template <typename Node, typename CompareFunction>
-Node* RB_NFIND_LIGHT(RBHead<Node>* head, const void* lelm, CompareFunction lcmp) {
- Node* tmp = head->Root();
- Node* res = nullptr;
+template <typename T, typename U, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_NFIND_KEY(RBHead<T>& head, const U& key, Compare cmp) {
+ T* tmp = head.Root();
+ T* res = nullptr;
while (tmp) {
- const int comp = lcmp(lelm, tmp);
+ const int comp = cmp(key, tmp);
if (comp < 0) {
res = tmp;
tmp = RB_LEFT(tmp);
@@ -616,8 +635,43 @@ Node* RB_NFIND_LIGHT(RBHead<Node>* head, const void* lelm, CompareFunction lcmp)
return res;
}
-template <typename Node>
-Node* RB_NEXT(Node* elm) {
+template <typename T, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_FIND_EXISTING(RBHead<T>& head, T* elm, Compare cmp) {
+ T* tmp = head.Root();
+
+ while (true) {
+ const int comp = cmp(elm, tmp);
+ if (comp < 0) {
+ tmp = RB_LEFT(tmp);
+ } else if (comp > 0) {
+ tmp = RB_RIGHT(tmp);
+ } else {
+ return tmp;
+ }
+ }
+}
+
+template <typename T, typename U, typename Compare>
+requires HasRBEntry<T>
+constexpr T* RB_FIND_EXISTING_KEY(RBHead<T>& head, const U& key, Compare cmp) {
+ T* tmp = head.Root();
+
+ while (true) {
+ const int comp = cmp(key, tmp);
+ if (comp < 0) {
+ tmp = RB_LEFT(tmp);
+ } else if (comp > 0) {
+ tmp = RB_RIGHT(tmp);
+ } else {
+ return tmp;
+ }
+ }
+}
+
+template <typename T>
+requires HasRBEntry<T>
+constexpr T* RB_NEXT(T* elm) {
if (RB_RIGHT(elm)) {
elm = RB_RIGHT(elm);
while (RB_LEFT(elm)) {
@@ -636,8 +690,9 @@ Node* RB_NEXT(Node* elm) {
return elm;
}
-template <typename Node>
-Node* RB_PREV(Node* elm) {
+template <typename T>
+requires HasRBEntry<T>
+constexpr T* RB_PREV(T* elm) {
if (RB_LEFT(elm)) {
elm = RB_LEFT(elm);
while (RB_RIGHT(elm)) {
@@ -656,30 +711,32 @@ Node* RB_PREV(Node* elm) {
return elm;
}
-template <typename Node>
-Node* RB_MINMAX(RBHead<Node>* head, bool is_min) {
- Node* tmp = head->Root();
- Node* parent = nullptr;
+template <typename T>
+requires HasRBEntry<T>
+constexpr T* RB_MIN(RBHead<T>& head) {
+ T* tmp = head.Root();
+ T* parent = nullptr;
while (tmp) {
parent = tmp;
- if (is_min) {
- tmp = RB_LEFT(tmp);
- } else {
- tmp = RB_RIGHT(tmp);
- }
+ tmp = RB_LEFT(tmp);
}
return parent;
}
-template <typename Node>
-Node* RB_MIN(RBHead<Node>* head) {
- return RB_MINMAX(head, true);
-}
+template <typename T>
+requires HasRBEntry<T>
+constexpr T* RB_MAX(RBHead<T>& head) {
+ T* tmp = head.Root();
+ T* parent = nullptr;
-template <typename Node>
-Node* RB_MAX(RBHead<Node>* head) {
- return RB_MINMAX(head, false);
+ while (tmp) {
+ parent = tmp;
+ tmp = RB_RIGHT(tmp);
+ }
+
+ return parent;
}
-} // namespace Common
+
+} // namespace Common::freebsd
diff --git a/src/common/uuid.cpp b/src/common/uuid.cpp
index d7435a6e9..2b6a530e3 100644
--- a/src/common/uuid.cpp
+++ b/src/common/uuid.cpp
@@ -1,23 +1,25 @@
-// Copyright 2018 yuzu Emulator Project
+// Copyright 2022 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <bit>
+#include <optional>
#include <random>
#include <fmt/format.h>
#include "common/assert.h"
+#include "common/tiny_mt.h"
#include "common/uuid.h"
namespace Common {
namespace {
-bool IsHexDigit(char c) {
- return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
-}
+constexpr size_t RawStringSize = sizeof(UUID) * 2;
+constexpr size_t FormattedStringSize = RawStringSize + 4;
-u8 HexCharToByte(char c) {
+std::optional<u8> HexCharToByte(char c) {
if (c >= '0' && c <= '9') {
return static_cast<u8>(c - '0');
}
@@ -28,60 +30,184 @@ u8 HexCharToByte(char c) {
return static_cast<u8>(c - 'A' + 10);
}
ASSERT_MSG(false, "{} is not a hexadecimal digit!", c);
- return u8{0};
+ return std::nullopt;
}
-} // Anonymous namespace
+std::array<u8, 0x10> ConstructFromRawString(std::string_view raw_string) {
+ std::array<u8, 0x10> uuid;
+
+ for (size_t i = 0; i < RawStringSize; i += 2) {
+ const auto upper = HexCharToByte(raw_string[i]);
+ const auto lower = HexCharToByte(raw_string[i + 1]);
+ if (!upper || !lower) {
+ return {};
+ }
+ uuid[i / 2] = static_cast<u8>((*upper << 4) | *lower);
+ }
+
+ return uuid;
+}
-u128 HexStringToU128(std::string_view hex_string) {
- const size_t length = hex_string.length();
+std::array<u8, 0x10> ConstructFromFormattedString(std::string_view formatted_string) {
+ std::array<u8, 0x10> uuid;
- // Detect "0x" prefix.
- const bool has_0x_prefix = length > 2 && hex_string[0] == '0' && hex_string[1] == 'x';
- const size_t offset = has_0x_prefix ? 2 : 0;
+ size_t i = 0;
- // Check length.
- if (length > 32 + offset) {
- ASSERT_MSG(false, "hex_string has more than 32 hexadecimal characters!");
- return INVALID_UUID;
+ // Process the first 8 characters.
+ const auto* str = formatted_string.data();
+
+ for (; i < 4; ++i) {
+ const auto upper = HexCharToByte(*(str++));
+ const auto lower = HexCharToByte(*(str++));
+ if (!upper || !lower) {
+ return {};
+ }
+ uuid[i] = static_cast<u8>((*upper << 4) | *lower);
+ }
+
+ // Process the next 4 characters.
+ ++str;
+
+ for (; i < 6; ++i) {
+ const auto upper = HexCharToByte(*(str++));
+ const auto lower = HexCharToByte(*(str++));
+ if (!upper || !lower) {
+ return {};
+ }
+ uuid[i] = static_cast<u8>((*upper << 4) | *lower);
}
- u64 lo = 0;
- u64 hi = 0;
- for (size_t i = 0; i < length - offset; ++i) {
- const char c = hex_string[length - 1 - i];
- if (!IsHexDigit(c)) {
- ASSERT_MSG(false, "{} is not a hexadecimal digit!", c);
- return INVALID_UUID;
+ // Process the next 4 characters.
+ ++str;
+
+ for (; i < 8; ++i) {
+ const auto upper = HexCharToByte(*(str++));
+ const auto lower = HexCharToByte(*(str++));
+ if (!upper || !lower) {
+ return {};
}
- if (i < 16) {
- lo |= u64{HexCharToByte(c)} << (i * 4);
+ uuid[i] = static_cast<u8>((*upper << 4) | *lower);
+ }
+
+ // Process the next 4 characters.
+ ++str;
+
+ for (; i < 10; ++i) {
+ const auto upper = HexCharToByte(*(str++));
+ const auto lower = HexCharToByte(*(str++));
+ if (!upper || !lower) {
+ return {};
}
- if (i >= 16) {
- hi |= u64{HexCharToByte(c)} << ((i - 16) * 4);
+ uuid[i] = static_cast<u8>((*upper << 4) | *lower);
+ }
+
+ // Process the last 12 characters.
+ ++str;
+
+ for (; i < 16; ++i) {
+ const auto upper = HexCharToByte(*(str++));
+ const auto lower = HexCharToByte(*(str++));
+ if (!upper || !lower) {
+ return {};
}
+ uuid[i] = static_cast<u8>((*upper << 4) | *lower);
+ }
+
+ return uuid;
+}
+
+std::array<u8, 0x10> ConstructUUID(std::string_view uuid_string) {
+ const auto length = uuid_string.length();
+
+ if (length == 0) {
+ return {};
+ }
+
+ // Check if the input string contains 32 hexadecimal characters.
+ if (length == RawStringSize) {
+ return ConstructFromRawString(uuid_string);
+ }
+
+ // Check if the input string has the length of a RFC 4122 formatted UUID string.
+ if (length == FormattedStringSize) {
+ return ConstructFromFormattedString(uuid_string);
}
- return u128{lo, hi};
+
+ ASSERT_MSG(false, "UUID string has an invalid length of {} characters!", length);
+
+ return {};
+}
+
+} // Anonymous namespace
+
+UUID::UUID(std::string_view uuid_string) : uuid{ConstructUUID(uuid_string)} {}
+
+std::string UUID::RawString() const {
+ return fmt::format("{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}"
+ "{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}",
+ uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7],
+ uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14],
+ uuid[15]);
+}
+
+std::string UUID::FormattedString() const {
+ return fmt::format("{:02x}{:02x}{:02x}{:02x}"
+ "-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-"
+ "{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}",
+ uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7],
+ uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14],
+ uuid[15]);
+}
+
+size_t UUID::Hash() const noexcept {
+ u64 upper_hash;
+ u64 lower_hash;
+
+ std::memcpy(&upper_hash, uuid.data(), sizeof(u64));
+ std::memcpy(&lower_hash, uuid.data() + sizeof(u64), sizeof(u64));
+
+ return upper_hash ^ std::rotl(lower_hash, 1);
}
-UUID UUID::Generate() {
+u128 UUID::AsU128() const {
+ u128 uuid_old;
+ std::memcpy(&uuid_old, uuid.data(), sizeof(UUID));
+ return uuid_old;
+}
+
+UUID UUID::MakeRandom() {
std::random_device device;
- std::mt19937 gen(device());
- std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max());
- return UUID{distribution(gen), distribution(gen)};
+
+ return MakeRandomWithSeed(device());
}
-std::string UUID::Format() const {
- return fmt::format("{:016x}{:016x}", uuid[1], uuid[0]);
+UUID UUID::MakeRandomWithSeed(u32 seed) {
+ // Create and initialize our RNG.
+ TinyMT rng;
+ rng.Initialize(seed);
+
+ UUID uuid;
+
+ // Populate the UUID with random bytes.
+ rng.GenerateRandomBytes(uuid.uuid.data(), sizeof(UUID));
+
+ return uuid;
}
-std::string UUID::FormatSwitch() const {
- std::array<u8, 16> s{};
- std::memcpy(s.data(), uuid.data(), sizeof(u128));
- return fmt::format("{:02x}{:02x}{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{"
- ":02x}{:02x}{:02x}{:02x}{:02x}",
- s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9], s[10], s[11],
- s[12], s[13], s[14], s[15]);
+UUID UUID::MakeRandomRFC4122V4() {
+ auto uuid = MakeRandom();
+
+ // According to Proposed Standard RFC 4122 Section 4.4, we must:
+
+ // 1. Set the two most significant bits (bits 6 and 7) of the
+ // clock_seq_hi_and_reserved to zero and one, respectively.
+ uuid.uuid[8] = 0x80 | (uuid.uuid[8] & 0x3F);
+
+ // 2. Set the four most significant bits (bits 12 through 15) of the
+ // time_hi_and_version field to the 4-bit version number from Section 4.1.3.
+ uuid.uuid[6] = 0x40 | (uuid.uuid[6] & 0xF);
+
+ return uuid;
}
} // namespace Common
diff --git a/src/common/uuid.h b/src/common/uuid.h
index 8ea01f8da..fe31e64e6 100644
--- a/src/common/uuid.h
+++ b/src/common/uuid.h
@@ -1,9 +1,11 @@
-// Copyright 2018 yuzu Emulator Project
+// Copyright 2022 yuzu Emulator Project
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
+#include <array>
+#include <functional>
#include <string>
#include <string_view>
@@ -11,69 +13,119 @@
namespace Common {
-constexpr u128 INVALID_UUID{{0, 0}};
-
-/**
- * Converts a hex string to a 128-bit unsigned integer.
- *
- * The hex string can be formatted in lowercase or uppercase, with or without the "0x" prefix.
- *
- * This function will assert and return INVALID_UUID under the following conditions:
- * - If the hex string is more than 32 characters long
- * - If the hex string contains non-hexadecimal characters
- *
- * @param hex_string Hexadecimal string
- *
- * @returns A 128-bit unsigned integer if successfully converted, INVALID_UUID otherwise.
- */
-[[nodiscard]] u128 HexStringToU128(std::string_view hex_string);
-
struct UUID {
- // UUIDs which are 0 are considered invalid!
- u128 uuid;
- UUID() = default;
- constexpr explicit UUID(const u128& id) : uuid{id} {}
- constexpr explicit UUID(const u64 lo, const u64 hi) : uuid{{lo, hi}} {}
- explicit UUID(std::string_view hex_string) {
- uuid = HexStringToU128(hex_string);
- }
-
- [[nodiscard]] constexpr explicit operator bool() const {
- return uuid != INVALID_UUID;
- }
-
- [[nodiscard]] constexpr bool operator==(const UUID& rhs) const {
- return uuid == rhs.uuid;
- }
-
- [[nodiscard]] constexpr bool operator!=(const UUID& rhs) const {
- return !operator==(rhs);
- }
-
- // TODO(ogniK): Properly generate uuids based on RFC-4122
- [[nodiscard]] static UUID Generate();
-
- // Set the UUID to {0,0} to be considered an invalid user
- constexpr void Invalidate() {
- uuid = INVALID_UUID;
+ std::array<u8, 0x10> uuid{};
+
+ /// Constructs an invalid UUID.
+ constexpr UUID() = default;
+
+ /// Constructs a UUID from a reference to a 128 bit array.
+ constexpr explicit UUID(const std::array<u8, 16>& uuid_) : uuid{uuid_} {}
+
+ /**
+ * Constructs a UUID from either:
+ * 1. A 32 hexadecimal character string representing the bytes of the UUID
+ * 2. A RFC 4122 formatted UUID string, in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+ *
+ * The input string may contain uppercase or lowercase characters, but they must:
+ * 1. Contain valid hexadecimal characters (0-9, a-f, A-F)
+ * 2. Not contain the "0x" hexadecimal prefix
+ *
+ * Should the input string not meet the above requirements,
+ * an assert will be triggered and an invalid UUID is set instead.
+ */
+ explicit UUID(std::string_view uuid_string);
+
+ ~UUID() = default;
+
+ constexpr UUID(const UUID&) noexcept = default;
+ constexpr UUID(UUID&&) noexcept = default;
+
+ constexpr UUID& operator=(const UUID&) noexcept = default;
+ constexpr UUID& operator=(UUID&&) noexcept = default;
+
+ /**
+ * Returns whether the stored UUID is valid or not.
+ *
+ * @returns True if the stored UUID is valid, false otherwise.
+ */
+ constexpr bool IsValid() const {
+ return uuid != std::array<u8, 0x10>{};
}
- [[nodiscard]] constexpr bool IsInvalid() const {
- return uuid == INVALID_UUID;
- }
- [[nodiscard]] constexpr bool IsValid() const {
- return !IsInvalid();
+ /**
+ * Returns whether the stored UUID is invalid or not.
+ *
+ * @returns True if the stored UUID is invalid, false otherwise.
+ */
+ constexpr bool IsInvalid() const {
+ return !IsValid();
}
- // TODO(ogniK): Properly generate a Nintendo ID
- [[nodiscard]] constexpr u64 GetNintendoID() const {
- return uuid[0];
+ /**
+ * Returns a 32 hexadecimal character string representing the bytes of the UUID.
+ *
+ * @returns A 32 hexadecimal character string of the UUID.
+ */
+ std::string RawString() const;
+
+ /**
+ * Returns a RFC 4122 formatted UUID string in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
+ *
+ * @returns A RFC 4122 formatted UUID string.
+ */
+ std::string FormattedString() const;
+
+ /**
+ * Returns a 64-bit hash of the UUID for use in hash table data structures.
+ *
+ * @returns A 64-bit hash of the UUID.
+ */
+ size_t Hash() const noexcept;
+
+ /// DO NOT USE. Copies the contents of the UUID into a u128.
+ u128 AsU128() const;
+
+ /**
+ * Creates a default UUID "yuzu Default UID".
+ *
+ * @returns A UUID with its bytes set to the ASCII values of "yuzu Default UID".
+ */
+ static constexpr UUID MakeDefault() {
+ return UUID{
+ {'y', 'u', 'z', 'u', ' ', 'D', 'e', 'f', 'a', 'u', 'l', 't', ' ', 'U', 'I', 'D'},
+ };
}
- [[nodiscard]] std::string Format() const;
- [[nodiscard]] std::string FormatSwitch() const;
+ /**
+ * Creates a random UUID.
+ *
+ * @returns A random UUID.
+ */
+ static UUID MakeRandom();
+
+ /**
+ * Creates a random UUID with a seed.
+ *
+ * @param seed A seed to initialize the Mersenne-Twister RNG
+ *
+ * @returns A random UUID.
+ */
+ static UUID MakeRandomWithSeed(u32 seed);
+
+ /**
+ * Creates a random UUID. The generated UUID is RFC 4122 Version 4 compliant.
+ *
+ * @returns A random UUID that is RFC 4122 Version 4 compliant.
+ */
+ static UUID MakeRandomRFC4122V4();
+
+ friend constexpr bool operator==(const UUID& lhs, const UUID& rhs) = default;
};
-static_assert(sizeof(UUID) == 16, "UUID is an invalid size!");
+static_assert(sizeof(UUID) == 0x10, "UUID has incorrect size.");
+
+/// An invalid UUID. This UUID has all its bytes set to 0.
+constexpr UUID InvalidUUID = {};
} // namespace Common
@@ -82,7 +134,7 @@ namespace std {
template <>
struct hash<Common::UUID> {
size_t operator()(const Common::UUID& uuid) const noexcept {
- return uuid.uuid[1] ^ uuid.uuid[0];
+ return uuid.Hash();
}
};
diff --git a/src/common/x64/cpu_detect.cpp b/src/common/x64/cpu_detect.cpp
index fbeacc7e2..d81edb140 100644
--- a/src/common/x64/cpu_detect.cpp
+++ b/src/common/x64/cpu_detect.cpp
@@ -1,8 +1,12 @@
-// Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
+// Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project / 2022 Yuzu Emulator
+// Project Licensed under GPLv2 or any later version Refer to the license.txt file included.
+#include <array>
#include <cstring>
+#include <iterator>
+#include <span>
+#include <string_view>
+#include "common/bit_util.h"
#include "common/common_types.h"
#include "common/x64/cpu_detect.h"
@@ -17,7 +21,7 @@
// clang-format on
#endif
-static inline void __cpuidex(int info[4], int function_id, int subfunction_id) {
+static inline void __cpuidex(int info[4], u32 function_id, u32 subfunction_id) {
#if defined(__DragonFly__) || defined(__FreeBSD__)
// Despite the name, this is just do_cpuid() with ECX as second input.
cpuid_count((u_int)function_id, (u_int)subfunction_id, (u_int*)info);
@@ -30,7 +34,7 @@ static inline void __cpuidex(int info[4], int function_id, int subfunction_id) {
#endif
}
-static inline void __cpuid(int info[4], int function_id) {
+static inline void __cpuid(int info[4], u32 function_id) {
return __cpuidex(info, function_id, 0);
}
@@ -45,6 +49,17 @@ static inline u64 _xgetbv(u32 index) {
namespace Common {
+CPUCaps::Manufacturer CPUCaps::ParseManufacturer(std::string_view brand_string) {
+ if (brand_string == "GenuineIntel") {
+ return Manufacturer::Intel;
+ } else if (brand_string == "AuthenticAMD") {
+ return Manufacturer::AMD;
+ } else if (brand_string == "HygonGenuine") {
+ return Manufacturer::Hygon;
+ }
+ return Manufacturer::Unknown;
+}
+
// Detects the various CPU features
static CPUCaps Detect() {
CPUCaps caps = {};
@@ -53,75 +68,74 @@ static CPUCaps Detect() {
// yuzu at all anyway
int cpu_id[4];
- memset(caps.brand_string, 0, sizeof(caps.brand_string));
- // Detect CPU's CPUID capabilities and grab CPU string
+ // Detect CPU's CPUID capabilities and grab manufacturer string
__cpuid(cpu_id, 0x00000000);
- u32 max_std_fn = cpu_id[0]; // EAX
-
- std::memcpy(&caps.brand_string[0], &cpu_id[1], sizeof(int));
- std::memcpy(&caps.brand_string[4], &cpu_id[3], sizeof(int));
- std::memcpy(&caps.brand_string[8], &cpu_id[2], sizeof(int));
- if (cpu_id[1] == 0x756e6547 && cpu_id[2] == 0x6c65746e && cpu_id[3] == 0x49656e69)
- caps.manufacturer = Manufacturer::Intel;
- else if (cpu_id[1] == 0x68747541 && cpu_id[2] == 0x444d4163 && cpu_id[3] == 0x69746e65)
- caps.manufacturer = Manufacturer::AMD;
- else if (cpu_id[1] == 0x6f677948 && cpu_id[2] == 0x656e6975 && cpu_id[3] == 0x6e65476e)
- caps.manufacturer = Manufacturer::Hygon;
- else
- caps.manufacturer = Manufacturer::Unknown;
+ const u32 max_std_fn = cpu_id[0]; // EAX
- __cpuid(cpu_id, 0x80000000);
+ std::memset(caps.brand_string, 0, std::size(caps.brand_string));
+ std::memcpy(&caps.brand_string[0], &cpu_id[1], sizeof(u32));
+ std::memcpy(&caps.brand_string[4], &cpu_id[3], sizeof(u32));
+ std::memcpy(&caps.brand_string[8], &cpu_id[2], sizeof(u32));
+
+ caps.manufacturer = CPUCaps::ParseManufacturer(caps.brand_string);
- u32 max_ex_fn = cpu_id[0];
+ // Set reasonable default cpu string even if brand string not available
+ std::strncpy(caps.cpu_string, caps.brand_string, std::size(caps.brand_string));
- // Set reasonable default brand string even if brand string not available
- strcpy(caps.cpu_string, caps.brand_string);
+ __cpuid(cpu_id, 0x80000000);
+
+ const u32 max_ex_fn = cpu_id[0];
// Detect family and other miscellaneous features
if (max_std_fn >= 1) {
__cpuid(cpu_id, 0x00000001);
- if ((cpu_id[3] >> 25) & 1)
- caps.sse = true;
- if ((cpu_id[3] >> 26) & 1)
- caps.sse2 = true;
- if ((cpu_id[2]) & 1)
- caps.sse3 = true;
- if ((cpu_id[2] >> 9) & 1)
- caps.ssse3 = true;
- if ((cpu_id[2] >> 19) & 1)
- caps.sse4_1 = true;
- if ((cpu_id[2] >> 20) & 1)
- caps.sse4_2 = true;
- if ((cpu_id[2] >> 25) & 1)
- caps.aes = true;
+ caps.sse = Common::Bit<25>(cpu_id[3]);
+ caps.sse2 = Common::Bit<26>(cpu_id[3]);
+ caps.sse3 = Common::Bit<0>(cpu_id[2]);
+ caps.pclmulqdq = Common::Bit<1>(cpu_id[2]);
+ caps.ssse3 = Common::Bit<9>(cpu_id[2]);
+ caps.sse4_1 = Common::Bit<19>(cpu_id[2]);
+ caps.sse4_2 = Common::Bit<20>(cpu_id[2]);
+ caps.movbe = Common::Bit<22>(cpu_id[2]);
+ caps.popcnt = Common::Bit<23>(cpu_id[2]);
+ caps.aes = Common::Bit<25>(cpu_id[2]);
+ caps.f16c = Common::Bit<29>(cpu_id[2]);
// AVX support requires 3 separate checks:
// - Is the AVX bit set in CPUID?
// - Is the XSAVE bit set in CPUID?
// - XGETBV result has the XCR bit set.
- if (((cpu_id[2] >> 28) & 1) && ((cpu_id[2] >> 27) & 1)) {
+ if (Common::Bit<28>(cpu_id[2]) && Common::Bit<27>(cpu_id[2])) {
if ((_xgetbv(_XCR_XFEATURE_ENABLED_MASK) & 0x6) == 0x6) {
caps.avx = true;
- if ((cpu_id[2] >> 12) & 1)
+ if (Common::Bit<12>(cpu_id[2]))
caps.fma = true;
}
}
if (max_std_fn >= 7) {
__cpuidex(cpu_id, 0x00000007, 0x00000000);
- // Can't enable AVX2 unless the XSAVE/XGETBV checks above passed
- if ((cpu_id[1] >> 5) & 1)
- caps.avx2 = caps.avx;
- if ((cpu_id[1] >> 3) & 1)
- caps.bmi1 = true;
- if ((cpu_id[1] >> 8) & 1)
- caps.bmi2 = true;
- // Checks for AVX512F, AVX512CD, AVX512VL, AVX512DQ, AVX512BW (Intel Skylake-X/SP)
- if ((cpu_id[1] >> 16) & 1 && (cpu_id[1] >> 28) & 1 && (cpu_id[1] >> 31) & 1 &&
- (cpu_id[1] >> 17) & 1 && (cpu_id[1] >> 30) & 1) {
- caps.avx512 = caps.avx2;
+ // Can't enable AVX{2,512} unless the XSAVE/XGETBV checks above passed
+ if (caps.avx) {
+ caps.avx2 = Common::Bit<5>(cpu_id[1]);
+ caps.avx512f = Common::Bit<16>(cpu_id[1]);
+ caps.avx512dq = Common::Bit<17>(cpu_id[1]);
+ caps.avx512cd = Common::Bit<28>(cpu_id[1]);
+ caps.avx512bw = Common::Bit<30>(cpu_id[1]);
+ caps.avx512vl = Common::Bit<31>(cpu_id[1]);
+ caps.avx512vbmi = Common::Bit<1>(cpu_id[2]);
+ caps.avx512bitalg = Common::Bit<12>(cpu_id[2]);
}
+
+ caps.bmi1 = Common::Bit<3>(cpu_id[1]);
+ caps.bmi2 = Common::Bit<8>(cpu_id[1]);
+ caps.sha = Common::Bit<29>(cpu_id[1]);
+
+ caps.gfni = Common::Bit<8>(cpu_id[2]);
+
+ __cpuidex(cpu_id, 0x00000007, 0x00000001);
+ caps.avx_vnni = caps.avx && Common::Bit<4>(cpu_id[0]);
}
}
@@ -138,15 +152,13 @@ static CPUCaps Detect() {
if (max_ex_fn >= 0x80000001) {
// Check for more features
__cpuid(cpu_id, 0x80000001);
- if ((cpu_id[2] >> 16) & 1)
- caps.fma4 = true;
+ caps.lzcnt = Common::Bit<5>(cpu_id[2]);
+ caps.fma4 = Common::Bit<16>(cpu_id[2]);
}
if (max_ex_fn >= 0x80000007) {
__cpuid(cpu_id, 0x80000007);
- if (cpu_id[3] & (1 << 8)) {
- caps.invariant_tsc = true;
- }
+ caps.invariant_tsc = Common::Bit<8>(cpu_id[3]);
}
if (max_std_fn >= 0x16) {
diff --git a/src/common/x64/cpu_detect.h b/src/common/x64/cpu_detect.h
index e3b63302e..40c48b132 100644
--- a/src/common/x64/cpu_detect.h
+++ b/src/common/x64/cpu_detect.h
@@ -1,42 +1,65 @@
-// Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
+// Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project / 2022 Yuzu Emulator
+// Project Project Licensed under GPLv2 or any later version Refer to the license.txt file included.
#pragma once
-namespace Common {
+#include <string_view>
+#include "common/common_types.h"
-enum class Manufacturer : u32 {
- Intel = 0,
- AMD = 1,
- Hygon = 2,
- Unknown = 3,
-};
+namespace Common {
/// x86/x64 CPU capabilities that may be detected by this module
struct CPUCaps {
+
+ enum class Manufacturer : u8 {
+ Unknown = 0,
+ Intel = 1,
+ AMD = 2,
+ Hygon = 3,
+ };
+
+ static Manufacturer ParseManufacturer(std::string_view brand_string);
+
Manufacturer manufacturer;
- char cpu_string[0x21];
- char brand_string[0x41];
- bool sse;
- bool sse2;
- bool sse3;
- bool ssse3;
- bool sse4_1;
- bool sse4_2;
- bool lzcnt;
- bool avx;
- bool avx2;
- bool avx512;
- bool bmi1;
- bool bmi2;
- bool fma;
- bool fma4;
- bool aes;
- bool invariant_tsc;
+ char brand_string[13];
+
+ char cpu_string[48];
+
u32 base_frequency;
u32 max_frequency;
u32 bus_frequency;
+
+ bool sse : 1;
+ bool sse2 : 1;
+ bool sse3 : 1;
+ bool ssse3 : 1;
+ bool sse4_1 : 1;
+ bool sse4_2 : 1;
+
+ bool avx : 1;
+ bool avx_vnni : 1;
+ bool avx2 : 1;
+ bool avx512f : 1;
+ bool avx512dq : 1;
+ bool avx512cd : 1;
+ bool avx512bw : 1;
+ bool avx512vl : 1;
+ bool avx512vbmi : 1;
+ bool avx512bitalg : 1;
+
+ bool aes : 1;
+ bool bmi1 : 1;
+ bool bmi2 : 1;
+ bool f16c : 1;
+ bool fma : 1;
+ bool fma4 : 1;
+ bool gfni : 1;
+ bool invariant_tsc : 1;
+ bool lzcnt : 1;
+ bool movbe : 1;
+ bool pclmulqdq : 1;
+ bool popcnt : 1;
+ bool sha : 1;
};
/**
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 6e8d11919..1d4e92edb 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -122,6 +122,8 @@ add_library(core STATIC
frontend/applets/error.h
frontend/applets/general_frontend.cpp
frontend/applets/general_frontend.h
+ frontend/applets/mii.cpp
+ frontend/applets/mii.h
frontend/applets/profile_select.cpp
frontend/applets/profile_select.h
frontend/applets/software_keyboard.cpp
@@ -152,6 +154,7 @@ add_library(core STATIC
hle/api_version.h
hle/ipc.h
hle/ipc_helpers.h
+ hle/kernel/board/nintendo/nx/k_memory_layout.h
hle/kernel/board/nintendo/nx/k_system_control.cpp
hle/kernel/board/nintendo/nx/k_system_control.h
hle/kernel/board/nintendo/nx/secure_monitor.h
@@ -164,6 +167,7 @@ add_library(core STATIC
hle/kernel/hle_ipc.h
hle/kernel/init/init_slab_setup.cpp
hle/kernel/init/init_slab_setup.h
+ hle/kernel/initial_process.h
hle/kernel/k_address_arbiter.cpp
hle/kernel/k_address_arbiter.h
hle/kernel/k_address_space_info.cpp
@@ -205,6 +209,8 @@ add_library(core STATIC
hle/kernel/k_memory_region.h
hle/kernel/k_memory_region_type.h
hle/kernel/k_page_bitmap.h
+ hle/kernel/k_page_buffer.cpp
+ hle/kernel/k_page_buffer.h
hle/kernel/k_page_heap.cpp
hle/kernel/k_page_heap.h
hle/kernel/k_page_linked_list.h
@@ -242,6 +248,8 @@ add_library(core STATIC
hle/kernel/k_system_control.h
hle/kernel/k_thread.cpp
hle/kernel/k_thread.h
+ hle/kernel/k_thread_local_page.cpp
+ hle/kernel/k_thread_local_page.h
hle/kernel/k_thread_queue.cpp
hle/kernel/k_thread_queue.h
hle/kernel/k_trace.h
@@ -298,6 +306,8 @@ add_library(core STATIC
hle/service/am/applets/applet_error.h
hle/service/am/applets/applet_general_backend.cpp
hle/service/am/applets/applet_general_backend.h
+ hle/service/am/applets/applet_mii.cpp
+ hle/service/am/applets/applet_mii.h
hle/service/am/applets/applet_profile_select.cpp
hle/service/am/applets/applet_profile_select.h
hle/service/am/applets/applet_software_keyboard.cpp
@@ -467,6 +477,8 @@ add_library(core STATIC
hle/service/mii/types.h
hle/service/mm/mm_u.cpp
hle/service/mm/mm_u.h
+ hle/service/mnpp/mnpp_app.cpp
+ hle/service/mnpp/mnpp_app.h
hle/service/ncm/ncm.cpp
hle/service/ncm/ncm.h
hle/service/nfc/nfc.cpp
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h
index 689e3ceb5..c60322442 100644
--- a/src/core/arm/arm_interface.h
+++ b/src/core/arm/arm_interface.h
@@ -6,6 +6,7 @@
#include <array>
#include <vector>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/hardware_properties.h"
@@ -24,8 +25,11 @@ class CPUInterruptHandler;
using CPUInterrupts = std::array<CPUInterruptHandler, Core::Hardware::NUM_CPU_CORES>;
/// Generic ARMv8 CPU interface
-class ARM_Interface : NonCopyable {
+class ARM_Interface {
public:
+ YUZU_NON_COPYABLE(ARM_Interface);
+ YUZU_NON_MOVEABLE(ARM_Interface);
+
explicit ARM_Interface(System& system_, CPUInterrupts& interrupt_handlers_,
bool uses_wall_clock_)
: system{system_}, interrupt_handlers{interrupt_handlers_}, uses_wall_clock{
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index b0d89c539..c1c843b8f 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -137,6 +137,8 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
config.page_table_pointer_mask_bits = Common::PageTable::ATTRIBUTE_BITS;
config.detect_misaligned_access_via_page_table = 16 | 32 | 64 | 128;
config.only_detect_misalignment_via_page_table_on_page_boundary = true;
+ config.fastmem_exclusive_access = true;
+ config.recompile_on_exclusive_fastmem_failure = true;
// Multi-process state
config.processor_id = core_index;
@@ -146,8 +148,8 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
config.wall_clock_cntpct = uses_wall_clock;
// Code cache size
- config.code_cache_size = 512_MiB;
- config.far_code_offset = 400_MiB;
+ config.code_cache_size = 128_MiB;
+ config.far_code_offset = 100_MiB;
// Safe optimizations
if (Settings::values.cpu_debug_mode) {
@@ -178,6 +180,12 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
if (!Settings::values.cpuopt_fastmem) {
config.fastmem_pointer = nullptr;
}
+ if (!Settings::values.cpuopt_fastmem_exclusives) {
+ config.fastmem_exclusive_access = false;
+ }
+ if (!Settings::values.cpuopt_recompile_exclusives) {
+ config.recompile_on_exclusive_fastmem_failure = false;
+ }
}
// Unsafe optimizations
@@ -195,6 +203,9 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
if (Settings::values.cpuopt_unsafe_inaccurate_nan) {
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_InaccurateNaN;
}
+ if (Settings::values.cpuopt_unsafe_ignore_global_monitor) {
+ config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreGlobalMonitor;
+ }
}
// Curated optimizations
@@ -203,6 +214,7 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_UnfuseFMA;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreStandardFPCRValue;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_InaccurateNaN;
+ config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreGlobalMonitor;
}
return std::make_unique<Dynarmic::A32::Jit>(config);
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index 56836bd05..aa74fce4d 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -185,6 +185,9 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable*
config.fastmem_pointer = page_table->fastmem_arena;
config.fastmem_address_space_bits = address_space_bits;
config.silently_mirror_fastmem = false;
+
+ config.fastmem_exclusive_access = true;
+ config.recompile_on_exclusive_fastmem_failure = true;
}
// Multi-process state
@@ -205,8 +208,8 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable*
config.wall_clock_cntpct = uses_wall_clock;
// Code cache size
- config.code_cache_size = 512_MiB;
- config.far_code_offset = 400_MiB;
+ config.code_cache_size = 128_MiB;
+ config.far_code_offset = 100_MiB;
// Safe optimizations
if (Settings::values.cpu_debug_mode) {
@@ -237,6 +240,12 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable*
if (!Settings::values.cpuopt_fastmem) {
config.fastmem_pointer = nullptr;
}
+ if (!Settings::values.cpuopt_fastmem_exclusives) {
+ config.fastmem_exclusive_access = false;
+ }
+ if (!Settings::values.cpuopt_recompile_exclusives) {
+ config.recompile_on_exclusive_fastmem_failure = false;
+ }
}
// Unsafe optimizations
@@ -254,6 +263,9 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable*
if (Settings::values.cpuopt_unsafe_fastmem_check) {
config.fastmem_address_space_bits = 64;
}
+ if (Settings::values.cpuopt_unsafe_ignore_global_monitor) {
+ config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreGlobalMonitor;
+ }
}
// Curated optimizations
@@ -262,6 +274,7 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable*
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_UnfuseFMA;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_InaccurateNaN;
config.fastmem_address_space_bits = 64;
+ config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreGlobalMonitor;
}
return std::make_shared<Dynarmic::A64::Jit>(config);
diff --git a/src/core/arm/dynarmic/arm_exclusive_monitor.cpp b/src/core/arm/dynarmic/arm_exclusive_monitor.cpp
index 397d054a8..ea6b224e0 100644
--- a/src/core/arm/dynarmic/arm_exclusive_monitor.cpp
+++ b/src/core/arm/dynarmic/arm_exclusive_monitor.cpp
@@ -37,8 +37,8 @@ u128 DynarmicExclusiveMonitor::ExclusiveRead128(std::size_t core_index, VAddr ad
});
}
-void DynarmicExclusiveMonitor::ClearExclusive() {
- monitor.Clear();
+void DynarmicExclusiveMonitor::ClearExclusive(std::size_t core_index) {
+ monitor.ClearProcessor(core_index);
}
bool DynarmicExclusiveMonitor::ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) {
diff --git a/src/core/arm/dynarmic/arm_exclusive_monitor.h b/src/core/arm/dynarmic/arm_exclusive_monitor.h
index 265c4ecef..5a15b43ef 100644
--- a/src/core/arm/dynarmic/arm_exclusive_monitor.h
+++ b/src/core/arm/dynarmic/arm_exclusive_monitor.h
@@ -29,7 +29,7 @@ public:
u32 ExclusiveRead32(std::size_t core_index, VAddr addr) override;
u64 ExclusiveRead64(std::size_t core_index, VAddr addr) override;
u128 ExclusiveRead128(std::size_t core_index, VAddr addr) override;
- void ClearExclusive() override;
+ void ClearExclusive(std::size_t core_index) override;
bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) override;
bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) override;
diff --git a/src/core/arm/exclusive_monitor.h b/src/core/arm/exclusive_monitor.h
index 62f6e6023..9914ca3da 100644
--- a/src/core/arm/exclusive_monitor.h
+++ b/src/core/arm/exclusive_monitor.h
@@ -23,7 +23,7 @@ public:
virtual u32 ExclusiveRead32(std::size_t core_index, VAddr addr) = 0;
virtual u64 ExclusiveRead64(std::size_t core_index, VAddr addr) = 0;
virtual u128 ExclusiveRead128(std::size_t core_index, VAddr addr) = 0;
- virtual void ClearExclusive() = 0;
+ virtual void ClearExclusive(std::size_t core_index) = 0;
virtual bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) = 0;
virtual bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) = 0;
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 3f9a7f44b..c60a784c3 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -28,7 +28,9 @@
#include "core/file_sys/vfs_real.h"
#include "core/hardware_interrupt_manager.h"
#include "core/hid/hid_core.h"
+#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/kernel/k_process.h"
+#include "core/hle/kernel/k_resource_limit.h"
#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/physical_core.h"
@@ -252,9 +254,16 @@ struct System::Impl {
}
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
+
+ // Create a resource limit for the process.
+ const auto physical_memory_size =
+ kernel.MemoryManager().GetSize(Kernel::KMemoryManager::Pool::Application);
+ auto* resource_limit = Kernel::CreateResourceLimitForProcess(system, physical_memory_size);
+
+ // Create the process.
auto main_process = Kernel::KProcess::Create(system.Kernel());
ASSERT(Kernel::KProcess::Initialize(main_process, system, "main",
- Kernel::KProcess::ProcessType::Userland)
+ Kernel::KProcess::ProcessType::Userland, resource_limit)
.IsSuccess());
const auto [load_result, load_parameters] = app_loader->Load(*main_process, system);
if (load_result != Loader::ResultStatus::Success) {
@@ -317,7 +326,9 @@ struct System::Impl {
is_powered_on = false;
exit_lock = false;
- gpu_core->NotifyShutdown();
+ if (gpu_core != nullptr) {
+ gpu_core->NotifyShutdown();
+ }
services.reset();
service_manager.reset();
diff --git a/src/core/device_memory.cpp b/src/core/device_memory.cpp
index f19c0515f..e6bc63086 100644
--- a/src/core/device_memory.cpp
+++ b/src/core/device_memory.cpp
@@ -3,10 +3,13 @@
// Refer to the license.txt file included.
#include "core/device_memory.h"
+#include "hle/kernel/board/nintendo/nx/k_system_control.h"
namespace Core {
-DeviceMemory::DeviceMemory() : buffer{DramMemoryMap::Size, 1ULL << 39} {}
+DeviceMemory::DeviceMemory()
+ : buffer{Kernel::Board::Nintendo::Nx::KSystemControl::Init::GetIntendedMemorySize(),
+ 1ULL << 39} {}
DeviceMemory::~DeviceMemory() = default;
} // namespace Core
diff --git a/src/core/device_memory.h b/src/core/device_memory.h
index c4d17705f..daeb551ea 100644
--- a/src/core/device_memory.h
+++ b/src/core/device_memory.h
@@ -12,12 +12,8 @@ namespace Core {
namespace DramMemoryMap {
enum : u64 {
Base = 0x80000000ULL,
- Size = 0x100000000ULL,
- End = Base + Size,
KernelReserveBase = Base + 0x60000,
SlabHeapBase = KernelReserveBase + 0x85000,
- SlapHeapSize = 0xa21000,
- SlabHeapEnd = SlabHeapBase + SlapHeapSize,
};
}; // namespace DramMemoryMap
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 7c0950bb0..f19ac4607 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -128,15 +128,6 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const {
if (exefs == nullptr)
return exefs;
- if (Settings::values.dump_exefs) {
- LOG_INFO(Loader, "Dumping ExeFS for title_id={:016X}", title_id);
- const auto dump_dir = fs_controller.GetModificationDumpRoot(title_id);
- if (dump_dir != nullptr) {
- const auto exefs_dir = GetOrCreateDirectoryRelative(dump_dir, "/exefs");
- VfsRawCopyD(exefs, exefs_dir);
- }
- }
-
const auto& disabled = Settings::values.disabled_addons[title_id];
const auto update_disabled =
std::find(disabled.cbegin(), disabled.cend(), "Update") != disabled.cend();
@@ -179,6 +170,15 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const {
}
}
+ if (Settings::values.dump_exefs) {
+ LOG_INFO(Loader, "Dumping ExeFS for title_id={:016X}", title_id);
+ const auto dump_dir = fs_controller.GetModificationDumpRoot(title_id);
+ if (dump_dir != nullptr) {
+ const auto exefs_dir = GetOrCreateDirectoryRelative(dump_dir, "/exefs");
+ VfsRawCopyD(exefs, exefs_dir);
+ }
+ }
+
return exefs;
}
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h
index 3e625fad6..1b9365853 100644
--- a/src/core/file_sys/vfs.h
+++ b/src/core/file_sys/vfs.h
@@ -12,6 +12,7 @@
#include <type_traits>
#include <vector>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/file_sys/vfs_types.h"
@@ -29,8 +30,11 @@ enum class VfsEntryType {
// A class representing an abstract filesystem. A default implementation given the root VirtualDir
// is provided for convenience, but if the Vfs implementation has any additional state or
// functionality, they will need to override.
-class VfsFilesystem : NonCopyable {
+class VfsFilesystem {
public:
+ YUZU_NON_COPYABLE(VfsFilesystem);
+ YUZU_NON_MOVEABLE(VfsFilesystem);
+
explicit VfsFilesystem(VirtualDir root);
virtual ~VfsFilesystem();
@@ -77,8 +81,12 @@ protected:
};
// A class representing a file in an abstract filesystem.
-class VfsFile : NonCopyable {
+class VfsFile {
public:
+ YUZU_NON_COPYABLE(VfsFile);
+ YUZU_NON_MOVEABLE(VfsFile);
+
+ VfsFile() = default;
virtual ~VfsFile();
// Retrieves the file name.
@@ -176,8 +184,12 @@ public:
};
// A class representing a directory in an abstract filesystem.
-class VfsDirectory : NonCopyable {
+class VfsDirectory {
public:
+ YUZU_NON_COPYABLE(VfsDirectory);
+ YUZU_NON_MOVEABLE(VfsDirectory);
+
+ VfsDirectory() = default;
virtual ~VfsDirectory();
// Retrives the file located at path as if the current directory was root. Returns nullptr if
diff --git a/src/core/frontend/applets/mii.cpp b/src/core/frontend/applets/mii.cpp
new file mode 100644
index 000000000..1c05ff412
--- /dev/null
+++ b/src/core/frontend/applets/mii.cpp
@@ -0,0 +1,19 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+#include "core/frontend/applets/mii.h"
+
+namespace Core::Frontend {
+
+MiiApplet::~MiiApplet() = default;
+
+void DefaultMiiApplet::ShowMii(
+ const MiiParameters& parameters,
+ const std::function<void(const Core::Frontend::MiiParameters& parameters)> callback) const {
+ LOG_INFO(Service_HID, "(STUBBED) called");
+ callback(parameters);
+}
+
+} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/mii.h b/src/core/frontend/applets/mii.h
new file mode 100644
index 000000000..1fc40a9c6
--- /dev/null
+++ b/src/core/frontend/applets/mii.h
@@ -0,0 +1,35 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <functional>
+
+#include "core/hle/result.h"
+#include "core/hle/service/mii/mii_manager.h"
+
+namespace Core::Frontend {
+
+struct MiiParameters {
+ bool is_editable;
+ Service::Mii::MiiInfo mii_data{};
+};
+
+class MiiApplet {
+public:
+ virtual ~MiiApplet();
+
+ virtual void ShowMii(const MiiParameters& parameters,
+ const std::function<void(const Core::Frontend::MiiParameters& parameters)>
+ callback) const = 0;
+};
+
+class DefaultMiiApplet final : public MiiApplet {
+public:
+ void ShowMii(const MiiParameters& parameters,
+ const std::function<void(const Core::Frontend::MiiParameters& parameters)>
+ callback) const override;
+};
+
+} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/profile_select.cpp b/src/core/frontend/applets/profile_select.cpp
index 3e4f90be2..4c58c310f 100644
--- a/src/core/frontend/applets/profile_select.cpp
+++ b/src/core/frontend/applets/profile_select.cpp
@@ -13,8 +13,7 @@ ProfileSelectApplet::~ProfileSelectApplet() = default;
void DefaultProfileSelectApplet::SelectProfile(
std::function<void(std::optional<Common::UUID>)> callback) const {
Service::Account::ProfileManager manager;
- callback(manager.GetUser(Settings::values.current_user.GetValue())
- .value_or(Common::UUID{Common::INVALID_UUID}));
+ callback(manager.GetUser(Settings::values.current_user.GetValue()).value_or(Common::UUID{}));
LOG_INFO(Service_ACC, "called, selecting current user instead of prompting...");
}
diff --git a/src/core/frontend/emu_window.h b/src/core/frontend/emu_window.h
index e413a520a..b3bffecb2 100644
--- a/src/core/frontend/emu_window.h
+++ b/src/core/frontend/emu_window.h
@@ -42,11 +42,20 @@ public:
context.MakeCurrent();
}
~Scoped() {
- context.DoneCurrent();
+ if (active) {
+ context.DoneCurrent();
+ }
+ }
+
+ /// In the event that context was destroyed before the Scoped is destroyed, this provides a
+ /// mechanism to prevent calling a destroyed object's method during the deconstructor
+ void Cancel() {
+ active = false;
}
private:
GraphicsContext& context;
+ bool active{true};
};
/// Calls MakeCurrent on the context and calls DoneCurrent when the scope for the returned value
diff --git a/src/core/hid/emulated_console.h b/src/core/hid/emulated_console.h
index 707419102..5eb170823 100644
--- a/src/core/hid/emulated_console.h
+++ b/src/core/hid/emulated_console.h
@@ -10,6 +10,7 @@
#include <mutex>
#include <unordered_map>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "common/input.h"
#include "common/param_package.h"
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp
index a7cdf45e6..7e05666d6 100644
--- a/src/core/hid/emulated_controller.cpp
+++ b/src/core/hid/emulated_controller.cpp
@@ -269,7 +269,8 @@ void EmulatedController::ReloadInput() {
}
// Use a common UUID for TAS
- const auto tas_uuid = Common::UUID{0x0, 0x7A5};
+ static constexpr Common::UUID TAS_UUID = Common::UUID{
+ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xA5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}};
// Register TAS devices. No need to force update
for (std::size_t index = 0; index < tas_button_devices.size(); ++index) {
@@ -278,8 +279,8 @@ void EmulatedController::ReloadInput() {
}
tas_button_devices[index]->SetCallback({
.on_change =
- [this, index, tas_uuid](const Common::Input::CallbackStatus& callback) {
- SetButton(callback, index, tas_uuid);
+ [this, index](const Common::Input::CallbackStatus& callback) {
+ SetButton(callback, index, TAS_UUID);
},
});
}
@@ -290,8 +291,8 @@ void EmulatedController::ReloadInput() {
}
tas_stick_devices[index]->SetCallback({
.on_change =
- [this, index, tas_uuid](const Common::Input::CallbackStatus& callback) {
- SetStick(callback, index, tas_uuid);
+ [this, index](const Common::Input::CallbackStatus& callback) {
+ SetStick(callback, index, TAS_UUID);
},
});
}
@@ -884,6 +885,12 @@ bool EmulatedController::TestVibration(std::size_t device_index) {
return SetVibration(device_index, DEFAULT_VIBRATION_VALUE);
}
+bool EmulatedController::SetPollingMode(Common::Input::PollingMode polling_mode) {
+ LOG_INFO(Service_HID, "Set polling mode {}", polling_mode);
+ auto& output_device = output_devices[static_cast<std::size_t>(DeviceIndex::Right)];
+ return output_device->SetPollingMode(polling_mode) == Common::Input::PollingError::None;
+}
+
void EmulatedController::SetLedPattern() {
for (auto& device : output_devices) {
if (!device) {
diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h
index a63a83cce..aa52f9572 100644
--- a/src/core/hid/emulated_controller.h
+++ b/src/core/hid/emulated_controller.h
@@ -13,8 +13,6 @@
#include "common/common_types.h"
#include "common/input.h"
#include "common/param_package.h"
-#include "common/point.h"
-#include "common/quaternion.h"
#include "common/settings.h"
#include "common/vector_math.h"
#include "core/hid/hid_types.h"
@@ -301,16 +299,23 @@ public:
/**
* Sends a specific vibration to the output device
- * @return returns true if vibration had no errors
+ * @return true if vibration had no errors
*/
bool SetVibration(std::size_t device_index, VibrationValue vibration);
/**
* Sends a small vibration to the output device
- * @return returns true if SetVibration was successfull
+ * @return true if SetVibration was successfull
*/
bool TestVibration(std::size_t device_index);
+ /**
+ * Sets the desired data to be polled from a controller
+ * @param polling_mode type of input desired buttons, gyro, nfc, ir, etc.
+ * @return true if SetPollingMode was successfull
+ */
+ bool SetPollingMode(Common::Input::PollingMode polling_mode);
+
/// Returns the led pattern corresponding to this emulated controller
LedPattern GetLedPattern() const;
diff --git a/src/core/hid/hid_core.h b/src/core/hid/hid_core.h
index 837f7de49..717f605e7 100644
--- a/src/core/hid/hid_core.h
+++ b/src/core/hid/hid_core.h
@@ -6,6 +6,7 @@
#include <memory>
+#include "common/common_funcs.h"
#include "core/hid/hid_types.h"
namespace Core::HID {
diff --git a/src/core/hid/input_converter.cpp b/src/core/hid/input_converter.cpp
index 860aab400..cd41607a7 100644
--- a/src/core/hid/input_converter.cpp
+++ b/src/core/hid/input_converter.cpp
@@ -28,7 +28,7 @@ Common::Input::BatteryStatus TransformToBattery(const Common::Input::CallbackSta
if (value > 0.8f) {
battery = Common::Input::BatteryLevel::Full;
}
- if (value >= 1.0f) {
+ if (value >= 0.95f) {
battery = Common::Input::BatteryLevel::Charging;
}
break;
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index cf204f570..3c4e45fcd 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -385,7 +385,7 @@ public:
T PopRaw();
template <class T>
- std::shared_ptr<T> PopIpcInterface() {
+ std::weak_ptr<T> PopIpcInterface() {
ASSERT(context->Session()->IsDomain());
ASSERT(context->GetDomainMessageHeader().input_object_count > 0);
return context->GetDomainHandler<T>(Pop<u32>() - 1);
@@ -404,6 +404,11 @@ inline s32 RequestParser::Pop() {
return static_cast<s32>(Pop<u32>());
}
+// Ignore the -Wclass-memaccess warning on memcpy for non-trivially default constructible objects.
+#if defined(__GNUC__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
template <typename T>
void RequestParser::PopRaw(T& value) {
static_assert(std::is_trivially_copyable_v<T>,
@@ -411,6 +416,9 @@ void RequestParser::PopRaw(T& value) {
std::memcpy(&value, cmdbuf + index, sizeof(T));
index += (sizeof(T) + 3) / 4; // round up to word length
}
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
template <typename T>
T RequestParser::PopRaw() {
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_memory_layout.h b/src/core/hle/kernel/board/nintendo/nx/k_memory_layout.h
new file mode 100644
index 000000000..01e225088
--- /dev/null
+++ b/src/core/hle/kernel/board/nintendo/nx/k_memory_layout.h
@@ -0,0 +1,13 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "common/common_types.h"
+
+namespace Kernel {
+
+constexpr inline PAddr MainMemoryAddress = 0x80000000;
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
index 6f335c251..8027bec00 100644
--- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
+++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
@@ -5,6 +5,7 @@
#include <random>
#include "common/literals.h"
+#include "common/settings.h"
#include "core/hle/kernel/board/nintendo/nx/k_system_control.h"
#include "core/hle/kernel/board/nintendo/nx/secure_monitor.h"
@@ -28,33 +29,20 @@ namespace {
using namespace Common::Literals;
-u32 GetMemoryModeForInit() {
- return 0x01;
-}
-
u32 GetMemorySizeForInit() {
- return 0;
+ return Settings::values.use_extended_memory_layout ? Smc::MemorySize_6GB : Smc::MemorySize_4GB;
}
Smc::MemoryArrangement GetMemoryArrangeForInit() {
- switch (GetMemoryModeForInit() & 0x3F) {
- case 0x01:
- default:
- return Smc::MemoryArrangement_4GB;
- case 0x02:
- return Smc::MemoryArrangement_4GBForAppletDev;
- case 0x03:
- return Smc::MemoryArrangement_4GBForSystemDev;
- case 0x11:
- return Smc::MemoryArrangement_6GB;
- case 0x12:
- return Smc::MemoryArrangement_6GBForAppletDev;
- case 0x21:
- return Smc::MemoryArrangement_8GB;
- }
+ return Settings::values.use_extended_memory_layout ? Smc::MemoryArrangement_6GB
+ : Smc::MemoryArrangement_4GB;
}
} // namespace
+size_t KSystemControl::Init::GetRealMemorySize() {
+ return GetIntendedMemorySize();
+}
+
// Initialization.
size_t KSystemControl::Init::GetIntendedMemorySize() {
switch (GetMemorySizeForInit()) {
@@ -69,7 +57,13 @@ size_t KSystemControl::Init::GetIntendedMemorySize() {
}
PAddr KSystemControl::Init::GetKernelPhysicalBaseAddress(u64 base_address) {
- return base_address;
+ const size_t real_dram_size = KSystemControl::Init::GetRealMemorySize();
+ const size_t intended_dram_size = KSystemControl::Init::GetIntendedMemorySize();
+ if (intended_dram_size * 2 < real_dram_size) {
+ return base_address;
+ } else {
+ return base_address + ((real_dram_size - intended_dram_size) / 2);
+ }
}
bool KSystemControl::Init::ShouldIncreaseThreadResourceLimit() {
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
index 52f230ced..df2a17f2a 100644
--- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
+++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
@@ -13,6 +13,7 @@ public:
class Init {
public:
// Initialization.
+ static std::size_t GetRealMemorySize();
static std::size_t GetIntendedMemorySize();
static PAddr GetKernelPhysicalBaseAddress(u64 base_address);
static bool ShouldIncreaseThreadResourceLimit();
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index e19544c54..9f2175f82 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -45,7 +45,7 @@ bool SessionRequestManager::HasSessionRequestHandler(const HLERequestContext& co
LOG_CRITICAL(IPC, "object_id {} is too big!", object_id);
return false;
}
- return DomainHandler(object_id - 1) != nullptr;
+ return DomainHandler(object_id - 1).lock() != nullptr;
} else {
return session_handler != nullptr;
}
@@ -53,9 +53,6 @@ bool SessionRequestManager::HasSessionRequestHandler(const HLERequestContext& co
void SessionRequestHandler::ClientConnected(KServerSession* session) {
session->ClientConnected(shared_from_this());
-
- // Ensure our server session is tracked globally.
- kernel.RegisterServerSession(session);
}
void SessionRequestHandler::ClientDisconnected(KServerSession* session) {
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 754b41ff6..670cc741c 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -94,6 +94,7 @@ protected:
std::weak_ptr<ServiceThread> service_thread;
};
+using SessionRequestHandlerWeakPtr = std::weak_ptr<SessionRequestHandler>;
using SessionRequestHandlerPtr = std::shared_ptr<SessionRequestHandler>;
/**
@@ -139,7 +140,7 @@ public:
}
}
- SessionRequestHandlerPtr DomainHandler(std::size_t index) const {
+ SessionRequestHandlerWeakPtr DomainHandler(std::size_t index) const {
ASSERT_MSG(index < DomainHandlerCount(), "Unexpected handler index {}", index);
return domain_handlers.at(index);
}
@@ -328,10 +329,10 @@ public:
template <typename T>
std::shared_ptr<T> GetDomainHandler(std::size_t index) const {
- return std::static_pointer_cast<T>(manager->DomainHandler(index));
+ return std::static_pointer_cast<T>(manager.lock()->DomainHandler(index).lock());
}
- void SetSessionRequestManager(std::shared_ptr<SessionRequestManager> manager_) {
+ void SetSessionRequestManager(std::weak_ptr<SessionRequestManager> manager_) {
manager = std::move(manager_);
}
@@ -374,7 +375,7 @@ private:
u32 handles_offset{};
u32 domain_offset{};
- std::shared_ptr<SessionRequestManager> manager;
+ std::weak_ptr<SessionRequestManager> manager;
KernelCore& kernel;
Core::Memory::Memory& memory;
diff --git a/src/core/hle/kernel/init/init_slab_setup.cpp b/src/core/hle/kernel/init/init_slab_setup.cpp
index 36fc0944a..b0f773ee0 100644
--- a/src/core/hle/kernel/init/init_slab_setup.cpp
+++ b/src/core/hle/kernel/init/init_slab_setup.cpp
@@ -7,19 +7,23 @@
#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/core.h"
+#include "core/device_memory.h"
#include "core/hardware_properties.h"
#include "core/hle/kernel/init/init_slab_setup.h"
#include "core/hle/kernel/k_code_memory.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_memory_layout.h"
#include "core/hle/kernel/k_memory_manager.h"
+#include "core/hle/kernel/k_page_buffer.h"
#include "core/hle/kernel/k_port.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/k_resource_limit.h"
#include "core/hle/kernel/k_session.h"
#include "core/hle/kernel/k_shared_memory.h"
+#include "core/hle/kernel/k_shared_memory_info.h"
#include "core/hle/kernel/k_system_control.h"
#include "core/hle/kernel/k_thread.h"
+#include "core/hle/kernel/k_thread_local_page.h"
#include "core/hle/kernel/k_transfer_memory.h"
namespace Kernel::Init {
@@ -32,9 +36,13 @@ namespace Kernel::Init {
HANDLER(KEvent, (SLAB_COUNT(KEvent)), ##__VA_ARGS__) \
HANDLER(KPort, (SLAB_COUNT(KPort)), ##__VA_ARGS__) \
HANDLER(KSharedMemory, (SLAB_COUNT(KSharedMemory)), ##__VA_ARGS__) \
+ HANDLER(KSharedMemoryInfo, (SLAB_COUNT(KSharedMemory) * 8), ##__VA_ARGS__) \
HANDLER(KTransferMemory, (SLAB_COUNT(KTransferMemory)), ##__VA_ARGS__) \
HANDLER(KCodeMemory, (SLAB_COUNT(KCodeMemory)), ##__VA_ARGS__) \
HANDLER(KSession, (SLAB_COUNT(KSession)), ##__VA_ARGS__) \
+ HANDLER(KThreadLocalPage, \
+ (SLAB_COUNT(KProcess) + (SLAB_COUNT(KProcess) + SLAB_COUNT(KThread)) / 8), \
+ ##__VA_ARGS__) \
HANDLER(KResourceLimit, (SLAB_COUNT(KResourceLimit)), ##__VA_ARGS__)
namespace {
@@ -50,38 +58,46 @@ enum KSlabType : u32 {
// Constexpr counts.
constexpr size_t SlabCountKProcess = 80;
constexpr size_t SlabCountKThread = 800;
-constexpr size_t SlabCountKEvent = 700;
+constexpr size_t SlabCountKEvent = 900;
constexpr size_t SlabCountKInterruptEvent = 100;
-constexpr size_t SlabCountKPort = 256 + 0x20; // Extra 0x20 ports over Nintendo for homebrew.
+constexpr size_t SlabCountKPort = 384;
constexpr size_t SlabCountKSharedMemory = 80;
constexpr size_t SlabCountKTransferMemory = 200;
constexpr size_t SlabCountKCodeMemory = 10;
constexpr size_t SlabCountKDeviceAddressSpace = 300;
-constexpr size_t SlabCountKSession = 933;
+constexpr size_t SlabCountKSession = 1133;
constexpr size_t SlabCountKLightSession = 100;
constexpr size_t SlabCountKObjectName = 7;
constexpr size_t SlabCountKResourceLimit = 5;
constexpr size_t SlabCountKDebug = Core::Hardware::NUM_CPU_CORES;
-constexpr size_t SlabCountKAlpha = 1;
-constexpr size_t SlabCountKBeta = 6;
+constexpr size_t SlabCountKIoPool = 1;
+constexpr size_t SlabCountKIoRegion = 6;
constexpr size_t SlabCountExtraKThread = 160;
+/// Helper function to translate from the slab virtual address to the reserved location in physical
+/// memory.
+static PAddr TranslateSlabAddrToPhysical(KMemoryLayout& memory_layout, VAddr slab_addr) {
+ slab_addr -= memory_layout.GetSlabRegionAddress();
+ return slab_addr + Core::DramMemoryMap::SlabHeapBase;
+}
+
template <typename T>
VAddr InitializeSlabHeap(Core::System& system, KMemoryLayout& memory_layout, VAddr address,
size_t num_objects) {
- // TODO(bunnei): This is just a place holder. We should initialize the appropriate KSlabHeap for
- // kernel object type T with the backing kernel memory pointer once we emulate kernel memory.
const size_t size = Common::AlignUp(sizeof(T) * num_objects, alignof(void*));
VAddr start = Common::AlignUp(address, alignof(T));
- // This is intentionally empty. Once KSlabHeap is fully implemented, we can replace this with
- // the pointer to emulated memory to pass along. Until then, KSlabHeap will just allocate/free
- // host memory.
- void* backing_kernel_memory{};
+ // This should use the virtual memory address passed in, but currently, we do not setup the
+ // kernel virtual memory layout. Instead, we simply map these at a region of physical memory
+ // that we reserve for the slab heaps.
+ // TODO(bunnei): Fix this once we support the kernel virtual memory layout.
if (size > 0) {
+ void* backing_kernel_memory{
+ system.DeviceMemory().GetPointer(TranslateSlabAddrToPhysical(memory_layout, start))};
+
const KMemoryRegion* region = memory_layout.FindVirtual(start + size - 1);
ASSERT(region != nullptr);
ASSERT(region->IsDerivedFrom(KMemoryRegionType_KernelSlab));
@@ -91,6 +107,12 @@ VAddr InitializeSlabHeap(Core::System& system, KMemoryLayout& memory_layout, VAd
return start + size;
}
+size_t CalculateSlabHeapGapSize() {
+ constexpr size_t KernelSlabHeapGapSize = 2_MiB - 296_KiB;
+ static_assert(KernelSlabHeapGapSize <= KernelSlabHeapGapsSizeMax);
+ return KernelSlabHeapGapSize;
+}
+
} // namespace
KSlabResourceCounts KSlabResourceCounts::CreateDefault() {
@@ -109,8 +131,8 @@ KSlabResourceCounts KSlabResourceCounts::CreateDefault() {
.num_KObjectName = SlabCountKObjectName,
.num_KResourceLimit = SlabCountKResourceLimit,
.num_KDebug = SlabCountKDebug,
- .num_KAlpha = SlabCountKAlpha,
- .num_KBeta = SlabCountKBeta,
+ .num_KIoPool = SlabCountKIoPool,
+ .num_KIoRegion = SlabCountKIoRegion,
};
}
@@ -136,11 +158,34 @@ size_t CalculateTotalSlabHeapSize(const KernelCore& kernel) {
#undef ADD_SLAB_SIZE
// Add the reserved size.
- size += KernelSlabHeapGapsSize;
+ size += CalculateSlabHeapGapSize();
return size;
}
+void InitializeKPageBufferSlabHeap(Core::System& system) {
+ auto& kernel = system.Kernel();
+
+ const auto& counts = kernel.SlabResourceCounts();
+ const size_t num_pages =
+ counts.num_KProcess + counts.num_KThread + (counts.num_KProcess + counts.num_KThread) / 8;
+ const size_t slab_size = num_pages * PageSize;
+
+ // Reserve memory from the system resource limit.
+ ASSERT(kernel.GetSystemResourceLimit()->Reserve(LimitableResource::PhysicalMemory, slab_size));
+
+ // Allocate memory for the slab.
+ constexpr auto AllocateOption = KMemoryManager::EncodeOption(
+ KMemoryManager::Pool::System, KMemoryManager::Direction::FromFront);
+ const PAddr slab_address =
+ kernel.MemoryManager().AllocateAndOpenContinuous(num_pages, 1, AllocateOption);
+ ASSERT(slab_address != 0);
+
+ // Initialize the slabheap.
+ KPageBuffer::InitializeSlabHeap(kernel, system.DeviceMemory().GetPointer(slab_address),
+ slab_size);
+}
+
void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout) {
auto& kernel = system.Kernel();
@@ -160,13 +205,13 @@ void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout) {
}
// Create an array to represent the gaps between the slabs.
- const size_t total_gap_size = KernelSlabHeapGapsSize;
+ const size_t total_gap_size = CalculateSlabHeapGapSize();
std::array<size_t, slab_types.size()> slab_gaps;
- for (size_t i = 0; i < slab_gaps.size(); i++) {
+ for (auto& slab_gap : slab_gaps) {
// Note: This is an off-by-one error from Nintendo's intention, because GenerateRandomRange
// is inclusive. However, Nintendo also has the off-by-one error, and it's "harmless", so we
// will include it ourselves.
- slab_gaps[i] = KSystemControl::GenerateRandomRange(0, total_gap_size);
+ slab_gap = KSystemControl::GenerateRandomRange(0, total_gap_size);
}
// Sort the array, so that we can treat differences between values as offsets to the starts of
@@ -177,13 +222,21 @@ void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout) {
}
}
- for (size_t i = 0; i < slab_types.size(); i++) {
+ // Track the gaps, so that we can free them to the unused slab tree.
+ VAddr gap_start = address;
+ size_t gap_size = 0;
+
+ for (size_t i = 0; i < slab_gaps.size(); i++) {
// Add the random gap to the address.
- address += (i == 0) ? slab_gaps[0] : slab_gaps[i] - slab_gaps[i - 1];
+ const auto cur_gap = (i == 0) ? slab_gaps[0] : slab_gaps[i] - slab_gaps[i - 1];
+ address += cur_gap;
+ gap_size += cur_gap;
#define INITIALIZE_SLAB_HEAP(NAME, COUNT, ...) \
case KSlabType_##NAME: \
- address = InitializeSlabHeap<NAME>(system, memory_layout, address, COUNT); \
+ if (COUNT > 0) { \
+ address = InitializeSlabHeap<NAME>(system, memory_layout, address, COUNT); \
+ } \
break;
// Initialize the slabheap.
@@ -192,7 +245,13 @@ void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout) {
FOREACH_SLAB_TYPE(INITIALIZE_SLAB_HEAP)
// If we somehow get an invalid type, abort.
default:
- UNREACHABLE();
+ UNREACHABLE_MSG("Unknown slab type: {}", slab_types[i]);
+ }
+
+ // If we've hit the end of a gap, free it.
+ if (gap_start + gap_size != address) {
+ gap_start = address;
+ gap_size = 0;
}
}
}
diff --git a/src/core/hle/kernel/init/init_slab_setup.h b/src/core/hle/kernel/init/init_slab_setup.h
index a8f7e0918..f54b67d02 100644
--- a/src/core/hle/kernel/init/init_slab_setup.h
+++ b/src/core/hle/kernel/init/init_slab_setup.h
@@ -32,12 +32,13 @@ struct KSlabResourceCounts {
size_t num_KObjectName;
size_t num_KResourceLimit;
size_t num_KDebug;
- size_t num_KAlpha;
- size_t num_KBeta;
+ size_t num_KIoPool;
+ size_t num_KIoRegion;
};
void InitializeSlabResourceCounts(KernelCore& kernel);
size_t CalculateTotalSlabHeapSize(const KernelCore& kernel);
+void InitializeKPageBufferSlabHeap(Core::System& system);
void InitializeSlabHeaps(Core::System& system, KMemoryLayout& memory_layout);
} // namespace Kernel::Init
diff --git a/src/core/hle/kernel/initial_process.h b/src/core/hle/kernel/initial_process.h
new file mode 100644
index 000000000..25b27909c
--- /dev/null
+++ b/src/core/hle/kernel/initial_process.h
@@ -0,0 +1,23 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "common/common_types.h"
+#include "common/literals.h"
+#include "core/hle/kernel/board/nintendo/nx/k_memory_layout.h"
+#include "core/hle/kernel/board/nintendo/nx/k_system_control.h"
+
+namespace Kernel {
+
+using namespace Common::Literals;
+
+constexpr std::size_t InitialProcessBinarySizeMax = 12_MiB;
+
+static inline PAddr GetInitialProcessBinaryPhysicalAddress() {
+ return Kernel::Board::Nintendo::Nx::KSystemControl::Init::GetKernelPhysicalBaseAddress(
+ MainMemoryAddress);
+}
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/k_address_arbiter.cpp b/src/core/hle/kernel/k_address_arbiter.cpp
index 783c69858..8cdd0490f 100644
--- a/src/core/hle/kernel/k_address_arbiter.cpp
+++ b/src/core/hle/kernel/k_address_arbiter.cpp
@@ -49,7 +49,7 @@ bool DecrementIfLessThan(Core::System& system, s32* out, VAddr address, s32 valu
}
} else {
// Otherwise, clear our exclusive hold and finish
- monitor.ClearExclusive();
+ monitor.ClearExclusive(current_core);
}
// We're done.
@@ -78,7 +78,7 @@ bool UpdateIfEqual(Core::System& system, s32* out, VAddr address, s32 value, s32
}
} else {
// Otherwise, clear our exclusive hold and finish.
- monitor.ClearExclusive();
+ monitor.ClearExclusive(current_core);
}
// We're done.
@@ -115,7 +115,7 @@ ResultCode KAddressArbiter::Signal(VAddr addr, s32 count) {
{
KScopedSchedulerLock sl(kernel);
- auto it = thread_tree.nfind_light({addr, -1});
+ auto it = thread_tree.nfind_key({addr, -1});
while ((it != thread_tree.end()) && (count <= 0 || num_waiters < count) &&
(it->GetAddressArbiterKey() == addr)) {
// End the thread's wait.
@@ -148,7 +148,7 @@ ResultCode KAddressArbiter::SignalAndIncrementIfEqual(VAddr addr, s32 value, s32
return ResultInvalidState;
}
- auto it = thread_tree.nfind_light({addr, -1});
+ auto it = thread_tree.nfind_key({addr, -1});
while ((it != thread_tree.end()) && (count <= 0 || num_waiters < count) &&
(it->GetAddressArbiterKey() == addr)) {
// End the thread's wait.
@@ -171,7 +171,7 @@ ResultCode KAddressArbiter::SignalAndModifyByWaitingCountIfEqual(VAddr addr, s32
{
[[maybe_unused]] const KScopedSchedulerLock sl(kernel);
- auto it = thread_tree.nfind_light({addr, -1});
+ auto it = thread_tree.nfind_key({addr, -1});
// Determine the updated value.
s32 new_value{};
if (count <= 0) {
diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h
index 165b76747..05779f2d5 100644
--- a/src/core/hle/kernel/k_auto_object.h
+++ b/src/core/hle/kernel/k_auto_object.h
@@ -20,8 +20,6 @@ class KernelCore;
class KProcess;
#define KERNEL_AUTOOBJECT_TRAITS(CLASS, BASE_CLASS) \
- YUZU_NON_COPYABLE(CLASS); \
- YUZU_NON_MOVEABLE(CLASS); \
\
private: \
friend class ::Kernel::KClassTokenGenerator; \
@@ -32,6 +30,9 @@ private:
} \
\
public: \
+ YUZU_NON_COPYABLE(CLASS); \
+ YUZU_NON_MOVEABLE(CLASS); \
+ \
using BaseClass = BASE_CLASS; \
static constexpr TypeObj GetStaticTypeObj() { \
constexpr ClassTokenType Token = ClassToken(); \
@@ -224,9 +225,9 @@ private:
template <typename T>
class KScopedAutoObject {
+public:
YUZU_NON_COPYABLE(KScopedAutoObject);
-public:
constexpr KScopedAutoObject() = default;
constexpr KScopedAutoObject(T* o) : m_obj(o) {
diff --git a/src/core/hle/kernel/k_auto_object_container.h b/src/core/hle/kernel/k_auto_object_container.h
index 4eadfe99d..697cc4289 100644
--- a/src/core/hle/kernel/k_auto_object_container.h
+++ b/src/core/hle/kernel/k_auto_object_container.h
@@ -16,13 +16,12 @@ class KernelCore;
class KProcess;
class KAutoObjectWithListContainer {
+public:
YUZU_NON_COPYABLE(KAutoObjectWithListContainer);
YUZU_NON_MOVEABLE(KAutoObjectWithListContainer);
-public:
using ListType = boost::intrusive::rbtree<KAutoObjectWithList>;
-public:
class ListAccessor : public KScopedLightLock {
public:
explicit ListAccessor(KAutoObjectWithListContainer* container)
@@ -48,7 +47,6 @@ public:
friend class ListAccessor;
-public:
KAutoObjectWithListContainer(KernelCore& kernel) : m_lock(kernel), m_object_list() {}
void Initialize() {}
diff --git a/src/core/hle/kernel/k_code_memory.cpp b/src/core/hle/kernel/k_code_memory.cpp
index d69f7ffb7..0b225e8e0 100644
--- a/src/core/hle/kernel/k_code_memory.cpp
+++ b/src/core/hle/kernel/k_code_memory.cpp
@@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include "common/alignment.h"
#include "common/common_types.h"
#include "core/device_memory.h"
#include "core/hle/kernel/k_auto_object.h"
@@ -28,8 +29,7 @@ ResultCode KCodeMemory::Initialize(Core::DeviceMemory& device_memory, VAddr addr
auto& page_table = m_owner->PageTable();
// Construct the page group.
- KMemoryInfo kBlockInfo = page_table.QueryInfo(addr);
- m_page_group = KPageLinkedList(kBlockInfo.GetAddress(), kBlockInfo.GetNumPages());
+ m_page_group = KPageLinkedList(addr, Common::DivideUp(size, PageSize));
// Lock the memory.
R_TRY(page_table.LockForCodeMemory(addr, size))
@@ -143,4 +143,4 @@ ResultCode KCodeMemory::UnmapFromOwner(VAddr address, size_t size) {
return ResultSuccess;
}
-} // namespace Kernel \ No newline at end of file
+} // namespace Kernel
diff --git a/src/core/hle/kernel/k_condition_variable.cpp b/src/core/hle/kernel/k_condition_variable.cpp
index aadcc297a..8e2a9593c 100644
--- a/src/core/hle/kernel/k_condition_variable.cpp
+++ b/src/core/hle/kernel/k_condition_variable.cpp
@@ -244,7 +244,7 @@ void KConditionVariable::Signal(u64 cv_key, s32 count) {
{
KScopedSchedulerLock sl(kernel);
- auto it = thread_tree.nfind_light({cv_key, -1});
+ auto it = thread_tree.nfind_key({cv_key, -1});
while ((it != thread_tree.end()) && (count <= 0 || num_waiters < count) &&
(it->GetConditionVariableKey() == cv_key)) {
KThread* target_thread = std::addressof(*it);
diff --git a/src/core/hle/kernel/k_event.cpp b/src/core/hle/kernel/k_event.cpp
index 0720efece..2e0e8de80 100644
--- a/src/core/hle/kernel/k_event.cpp
+++ b/src/core/hle/kernel/k_event.cpp
@@ -14,7 +14,7 @@ KEvent::KEvent(KernelCore& kernel_)
KEvent::~KEvent() = default;
-void KEvent::Initialize(std::string&& name_) {
+void KEvent::Initialize(std::string&& name_, KProcess* owner_) {
// Increment reference count.
// Because reference count is one on creation, this will result
// in a reference count of two. Thus, when both readable and
@@ -30,10 +30,8 @@ void KEvent::Initialize(std::string&& name_) {
writable_event.Initialize(this, name_ + ":Writable");
// Set our owner process.
- owner = kernel.CurrentProcess();
- if (owner) {
- owner->Open();
- }
+ owner = owner_;
+ owner->Open();
// Mark initialized.
name = std::move(name_);
@@ -47,10 +45,8 @@ void KEvent::Finalize() {
void KEvent::PostDestroy(uintptr_t arg) {
// Release the event count resource the owner process holds.
KProcess* owner = reinterpret_cast<KProcess*>(arg);
- if (owner) {
- owner->GetResourceLimit()->Release(LimitableResource::Events, 1);
- owner->Close();
- }
+ owner->GetResourceLimit()->Release(LimitableResource::Events, 1);
+ owner->Close();
}
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_event.h b/src/core/hle/kernel/k_event.h
index 3d3ec99e2..de9732ddf 100644
--- a/src/core/hle/kernel/k_event.h
+++ b/src/core/hle/kernel/k_event.h
@@ -22,7 +22,7 @@ public:
explicit KEvent(KernelCore& kernel_);
~KEvent() override;
- void Initialize(std::string&& name);
+ void Initialize(std::string&& name, KProcess* owner_);
void Finalize() override;
diff --git a/src/core/hle/kernel/k_handle_table.cpp b/src/core/hle/kernel/k_handle_table.cpp
index cf95f0852..db7512ee7 100644
--- a/src/core/hle/kernel/k_handle_table.cpp
+++ b/src/core/hle/kernel/k_handle_table.cpp
@@ -63,7 +63,7 @@ bool KHandleTable::Remove(Handle handle) {
return true;
}
-ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) {
+ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj) {
KScopedDisableDispatch dd(kernel);
KScopedSpinLock lk(m_lock);
@@ -75,7 +75,7 @@ ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) {
const auto linear_id = this->AllocateLinearId();
const auto index = this->AllocateEntry();
- m_entry_infos[index].info = {.linear_id = linear_id, .type = type};
+ m_entry_infos[index].linear_id = linear_id;
m_objects[index] = obj;
obj->Open();
@@ -116,7 +116,7 @@ void KHandleTable::Unreserve(Handle handle) {
}
}
-void KHandleTable::Register(Handle handle, KAutoObject* obj, u16 type) {
+void KHandleTable::Register(Handle handle, KAutoObject* obj) {
KScopedDisableDispatch dd(kernel);
KScopedSpinLock lk(m_lock);
@@ -132,7 +132,7 @@ void KHandleTable::Register(Handle handle, KAutoObject* obj, u16 type) {
// Set the entry.
ASSERT(m_objects[index] == nullptr);
- m_entry_infos[index].info = {.linear_id = static_cast<u16>(linear_id), .type = type};
+ m_entry_infos[index].linear_id = static_cast<u16>(linear_id);
m_objects[index] = obj;
obj->Open();
diff --git a/src/core/hle/kernel/k_handle_table.h b/src/core/hle/kernel/k_handle_table.h
index 4b114ec2f..dd27689b6 100644
--- a/src/core/hle/kernel/k_handle_table.h
+++ b/src/core/hle/kernel/k_handle_table.h
@@ -22,13 +22,12 @@ namespace Kernel {
class KernelCore;
class KHandleTable {
+public:
YUZU_NON_COPYABLE(KHandleTable);
YUZU_NON_MOVEABLE(KHandleTable);
-public:
static constexpr size_t MaxTableSize = 1024;
-public:
explicit KHandleTable(KernelCore& kernel_);
~KHandleTable();
@@ -43,7 +42,7 @@ public:
m_free_head_index = -1;
// Free all entries.
- for (s32 i = 0; i < static_cast<s32>(m_table_size); ++i) {
+ for (s16 i = 0; i < static_cast<s16>(m_table_size); ++i) {
m_objects[i] = nullptr;
m_entry_infos[i].next_free_index = i - 1;
m_free_head_index = i;
@@ -105,17 +104,8 @@ public:
ResultCode Reserve(Handle* out_handle);
void Unreserve(Handle handle);
- template <typename T>
- ResultCode Add(Handle* out_handle, T* obj) {
- static_assert(std::is_base_of_v<KAutoObject, T>);
- return this->Add(out_handle, obj, obj->GetTypeObj().GetClassToken());
- }
-
- template <typename T>
- void Register(Handle handle, T* obj) {
- static_assert(std::is_base_of_v<KAutoObject, T>);
- return this->Register(handle, obj, obj->GetTypeObj().GetClassToken());
- }
+ ResultCode Add(Handle* out_handle, KAutoObject* obj);
+ void Register(Handle handle, KAutoObject* obj);
template <typename T>
bool GetMultipleObjects(T** out, const Handle* handles, size_t num_handles) const {
@@ -161,9 +151,6 @@ public:
}
private:
- ResultCode Add(Handle* out_handle, KAutoObject* obj, u16 type);
- void Register(Handle handle, KAutoObject* obj, u16 type);
-
s32 AllocateEntry() {
ASSERT(m_count < m_table_size);
@@ -180,7 +167,7 @@ private:
ASSERT(m_count > 0);
m_objects[index] = nullptr;
- m_entry_infos[index].next_free_index = m_free_head_index;
+ m_entry_infos[index].next_free_index = static_cast<s16>(m_free_head_index);
m_free_head_index = index;
@@ -279,19 +266,13 @@ private:
}
union EntryInfo {
- struct {
- u16 linear_id;
- u16 type;
- } info;
- s32 next_free_index;
+ u16 linear_id;
+ s16 next_free_index;
constexpr u16 GetLinearId() const {
- return info.linear_id;
- }
- constexpr u16 GetType() const {
- return info.type;
+ return linear_id;
}
- constexpr s32 GetNextFreeIndex() const {
+ constexpr s16 GetNextFreeIndex() const {
return next_free_index;
}
};
diff --git a/src/core/hle/kernel/k_memory_layout.h b/src/core/hle/kernel/k_memory_layout.h
index 57ff538cc..0858827b6 100644
--- a/src/core/hle/kernel/k_memory_layout.h
+++ b/src/core/hle/kernel/k_memory_layout.h
@@ -57,11 +57,11 @@ constexpr std::size_t KernelPageTableHeapSize = GetMaximumOverheadSize(MainMemor
constexpr std::size_t KernelInitialPageHeapSize = 128_KiB;
constexpr std::size_t KernelSlabHeapDataSize = 5_MiB;
-constexpr std::size_t KernelSlabHeapGapsSize = 2_MiB - 64_KiB;
-constexpr std::size_t KernelSlabHeapSize = KernelSlabHeapDataSize + KernelSlabHeapGapsSize;
+constexpr std::size_t KernelSlabHeapGapsSizeMax = 2_MiB - 64_KiB;
+constexpr std::size_t KernelSlabHeapSize = KernelSlabHeapDataSize + KernelSlabHeapGapsSizeMax;
// NOTE: This is calculated from KThread slab counts, assuming KThread size <= 0x860.
-constexpr std::size_t KernelSlabHeapAdditionalSize = 416_KiB;
+constexpr std::size_t KernelSlabHeapAdditionalSize = 0x68000;
constexpr std::size_t KernelResourceSize =
KernelPageTableHeapSize + KernelInitialPageHeapSize + KernelSlabHeapSize;
@@ -173,6 +173,10 @@ public:
return Dereference(FindVirtualLinear(address));
}
+ const KMemoryRegion& GetPhysicalLinearRegion(PAddr address) const {
+ return Dereference(FindPhysicalLinear(address));
+ }
+
const KMemoryRegion* GetPhysicalKernelTraceBufferRegion() const {
return GetPhysicalMemoryRegionTree().FindFirstDerived(KMemoryRegionType_KernelTraceBuffer);
}
diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp
index 1b44541b1..a2f18f643 100644
--- a/src/core/hle/kernel/k_memory_manager.cpp
+++ b/src/core/hle/kernel/k_memory_manager.cpp
@@ -10,189 +10,412 @@
#include "common/scope_exit.h"
#include "core/core.h"
#include "core/device_memory.h"
+#include "core/hle/kernel/initial_process.h"
#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/kernel/k_page_linked_list.h"
+#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/svc_results.h"
+#include "core/memory.h"
namespace Kernel {
-KMemoryManager::KMemoryManager(Core::System& system_) : system{system_} {}
+namespace {
+
+constexpr KMemoryManager::Pool GetPoolFromMemoryRegionType(u32 type) {
+ if ((type | KMemoryRegionType_DramApplicationPool) == type) {
+ return KMemoryManager::Pool::Application;
+ } else if ((type | KMemoryRegionType_DramAppletPool) == type) {
+ return KMemoryManager::Pool::Applet;
+ } else if ((type | KMemoryRegionType_DramSystemPool) == type) {
+ return KMemoryManager::Pool::System;
+ } else if ((type | KMemoryRegionType_DramSystemNonSecurePool) == type) {
+ return KMemoryManager::Pool::SystemNonSecure;
+ } else {
+ UNREACHABLE_MSG("InvalidMemoryRegionType for conversion to Pool");
+ return {};
+ }
+}
-std::size_t KMemoryManager::Impl::Initialize(Pool new_pool, u64 start_address, u64 end_address) {
- const auto size{end_address - start_address};
+} // namespace
+
+KMemoryManager::KMemoryManager(Core::System& system_)
+ : system{system_}, pool_locks{
+ KLightLock{system_.Kernel()},
+ KLightLock{system_.Kernel()},
+ KLightLock{system_.Kernel()},
+ KLightLock{system_.Kernel()},
+ } {}
+
+void KMemoryManager::Initialize(VAddr management_region, size_t management_region_size) {
+
+ // Clear the management region to zero.
+ const VAddr management_region_end = management_region + management_region_size;
+
+ // Reset our manager count.
+ num_managers = 0;
+
+ // Traverse the virtual memory layout tree, initializing each manager as appropriate.
+ while (num_managers != MaxManagerCount) {
+ // Locate the region that should initialize the current manager.
+ PAddr region_address = 0;
+ size_t region_size = 0;
+ Pool region_pool = Pool::Count;
+ for (const auto& it : system.Kernel().MemoryLayout().GetPhysicalMemoryRegionTree()) {
+ // We only care about regions that we need to create managers for.
+ if (!it.IsDerivedFrom(KMemoryRegionType_DramUserPool)) {
+ continue;
+ }
- // Calculate metadata sizes
- const auto ref_count_size{(size / PageSize) * sizeof(u16)};
- const auto optimize_map_size{(Common::AlignUp((size / PageSize), 64) / 64) * sizeof(u64)};
- const auto manager_size{Common::AlignUp(optimize_map_size + ref_count_size, PageSize)};
- const auto page_heap_size{KPageHeap::CalculateManagementOverheadSize(size)};
- const auto total_metadata_size{manager_size + page_heap_size};
- ASSERT(manager_size <= total_metadata_size);
- ASSERT(Common::IsAligned(total_metadata_size, PageSize));
+ // We want to initialize the managers in order.
+ if (it.GetAttributes() != num_managers) {
+ continue;
+ }
- // Setup region
- pool = new_pool;
+ const PAddr cur_start = it.GetAddress();
+ const PAddr cur_end = it.GetEndAddress();
+
+ // Validate the region.
+ ASSERT(cur_end != 0);
+ ASSERT(cur_start != 0);
+ ASSERT(it.GetSize() > 0);
+
+ // Update the region's extents.
+ if (region_address == 0) {
+ region_address = cur_start;
+ region_size = it.GetSize();
+ region_pool = GetPoolFromMemoryRegionType(it.GetType());
+ } else {
+ ASSERT(cur_start == region_address + region_size);
+
+ // Update the size.
+ region_size = cur_end - region_address;
+ ASSERT(GetPoolFromMemoryRegionType(it.GetType()) == region_pool);
+ }
+ }
+
+ // If we didn't find a region, we're done.
+ if (region_size == 0) {
+ break;
+ }
- // Initialize the manager's KPageHeap
- heap.Initialize(start_address, size, page_heap_size);
+ // Initialize a new manager for the region.
+ Impl* manager = std::addressof(managers[num_managers++]);
+ ASSERT(num_managers <= managers.size());
+
+ const size_t cur_size = manager->Initialize(region_address, region_size, management_region,
+ management_region_end, region_pool);
+ management_region += cur_size;
+ ASSERT(management_region <= management_region_end);
+
+ // Insert the manager into the pool list.
+ const auto region_pool_index = static_cast<u32>(region_pool);
+ if (pool_managers_tail[region_pool_index] == nullptr) {
+ pool_managers_head[region_pool_index] = manager;
+ } else {
+ pool_managers_tail[region_pool_index]->SetNext(manager);
+ manager->SetPrev(pool_managers_tail[region_pool_index]);
+ }
+ pool_managers_tail[region_pool_index] = manager;
+ }
- // Free the memory to the heap
- heap.Free(start_address, size / PageSize);
+ // Free each region to its corresponding heap.
+ size_t reserved_sizes[MaxManagerCount] = {};
+ const PAddr ini_start = GetInitialProcessBinaryPhysicalAddress();
+ const PAddr ini_end = ini_start + InitialProcessBinarySizeMax;
+ const PAddr ini_last = ini_end - 1;
+ for (const auto& it : system.Kernel().MemoryLayout().GetPhysicalMemoryRegionTree()) {
+ if (it.IsDerivedFrom(KMemoryRegionType_DramUserPool)) {
+ // Get the manager for the region.
+ auto index = it.GetAttributes();
+ auto& manager = managers[index];
+
+ const PAddr cur_start = it.GetAddress();
+ const PAddr cur_last = it.GetLastAddress();
+ const PAddr cur_end = it.GetEndAddress();
+
+ if (cur_start <= ini_start && ini_last <= cur_last) {
+ // Free memory before the ini to the heap.
+ if (cur_start != ini_start) {
+ manager.Free(cur_start, (ini_start - cur_start) / PageSize);
+ }
- // Update the heap's used size
- heap.UpdateUsedSize();
+ // Open/reserve the ini memory.
+ manager.OpenFirst(ini_start, InitialProcessBinarySizeMax / PageSize);
+ reserved_sizes[it.GetAttributes()] += InitialProcessBinarySizeMax;
- return total_metadata_size;
-}
+ // Free memory after the ini to the heap.
+ if (ini_last != cur_last) {
+ ASSERT(cur_end != 0);
+ manager.Free(ini_end, cur_end - ini_end);
+ }
+ } else {
+ // Ensure there's no partial overlap with the ini image.
+ if (cur_start <= ini_last) {
+ ASSERT(cur_last < ini_start);
+ } else {
+ // Otherwise, check the region for general validity.
+ ASSERT(cur_end != 0);
+ }
-void KMemoryManager::InitializeManager(Pool pool, u64 start_address, u64 end_address) {
- ASSERT(pool < Pool::Count);
- managers[static_cast<std::size_t>(pool)].Initialize(pool, start_address, end_address);
+ // Free the memory to the heap.
+ manager.Free(cur_start, it.GetSize() / PageSize);
+ }
+ }
+ }
+
+ // Update the used size for all managers.
+ for (size_t i = 0; i < num_managers; ++i) {
+ managers[i].SetInitialUsedHeapSize(reserved_sizes[i]);
+ }
}
-VAddr KMemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_t align_pages,
- u32 option) {
- // Early return if we're allocating no pages
+PAddr KMemoryManager::AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option) {
+ // Early return if we're allocating no pages.
if (num_pages == 0) {
- return {};
+ return 0;
}
- // Lock the pool that we're allocating from
+ // Lock the pool that we're allocating from.
const auto [pool, dir] = DecodeOption(option);
- const auto pool_index{static_cast<std::size_t>(pool)};
- std::lock_guard lock{pool_locks[pool_index]};
-
- // Choose a heap based on our page size request
- const s32 heap_index{KPageHeap::GetAlignedBlockIndex(num_pages, align_pages)};
-
- // Loop, trying to iterate from each block
- // TODO (bunnei): Support multiple managers
- Impl& chosen_manager{managers[pool_index]};
- VAddr allocated_block{chosen_manager.AllocateBlock(heap_index, false)};
+ KScopedLightLock lk(pool_locks[static_cast<std::size_t>(pool)]);
+
+ // Choose a heap based on our page size request.
+ const s32 heap_index = KPageHeap::GetAlignedBlockIndex(num_pages, align_pages);
+
+ // Loop, trying to iterate from each block.
+ Impl* chosen_manager = nullptr;
+ PAddr allocated_block = 0;
+ for (chosen_manager = this->GetFirstManager(pool, dir); chosen_manager != nullptr;
+ chosen_manager = this->GetNextManager(chosen_manager, dir)) {
+ allocated_block = chosen_manager->AllocateBlock(heap_index, true);
+ if (allocated_block != 0) {
+ break;
+ }
+ }
- // If we failed to allocate, quit now
- if (!allocated_block) {
- return {};
+ // If we failed to allocate, quit now.
+ if (allocated_block == 0) {
+ return 0;
}
- // If we allocated more than we need, free some
- const auto allocated_pages{KPageHeap::GetBlockNumPages(heap_index)};
+ // If we allocated more than we need, free some.
+ const size_t allocated_pages = KPageHeap::GetBlockNumPages(heap_index);
if (allocated_pages > num_pages) {
- chosen_manager.Free(allocated_block + num_pages * PageSize, allocated_pages - num_pages);
+ chosen_manager->Free(allocated_block + num_pages * PageSize, allocated_pages - num_pages);
}
+ // Open the first reference to the pages.
+ chosen_manager->OpenFirst(allocated_block, num_pages);
+
return allocated_block;
}
-ResultCode KMemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
- Direction dir, u32 heap_fill_value) {
- ASSERT(page_list.GetNumPages() == 0);
+ResultCode KMemoryManager::AllocatePageGroupImpl(KPageLinkedList* out, size_t num_pages, Pool pool,
+ Direction dir, bool random) {
+ // Choose a heap based on our page size request.
+ const s32 heap_index = KPageHeap::GetBlockIndex(num_pages);
+ R_UNLESS(0 <= heap_index, ResultOutOfMemory);
+
+ // Ensure that we don't leave anything un-freed.
+ auto group_guard = SCOPE_GUARD({
+ for (const auto& it : out->Nodes()) {
+ auto& manager = this->GetManager(system.Kernel().MemoryLayout(), it.GetAddress());
+ const size_t num_pages_to_free =
+ std::min(it.GetNumPages(), (manager.GetEndAddress() - it.GetAddress()) / PageSize);
+ manager.Free(it.GetAddress(), num_pages_to_free);
+ }
+ });
- // Early return if we're allocating no pages
- if (num_pages == 0) {
- return ResultSuccess;
- }
+ // Keep allocating until we've allocated all our pages.
+ for (s32 index = heap_index; index >= 0 && num_pages > 0; index--) {
+ const size_t pages_per_alloc = KPageHeap::GetBlockNumPages(index);
+ for (Impl* cur_manager = this->GetFirstManager(pool, dir); cur_manager != nullptr;
+ cur_manager = this->GetNextManager(cur_manager, dir)) {
+ while (num_pages >= pages_per_alloc) {
+ // Allocate a block.
+ PAddr allocated_block = cur_manager->AllocateBlock(index, random);
+ if (allocated_block == 0) {
+ break;
+ }
- // Lock the pool that we're allocating from
- const auto pool_index{static_cast<std::size_t>(pool)};
- std::lock_guard lock{pool_locks[pool_index]};
+ // Safely add it to our group.
+ {
+ auto block_guard =
+ SCOPE_GUARD({ cur_manager->Free(allocated_block, pages_per_alloc); });
+ R_TRY(out->AddBlock(allocated_block, pages_per_alloc));
+ block_guard.Cancel();
+ }
- // Choose a heap based on our page size request
- const s32 heap_index{KPageHeap::GetBlockIndex(num_pages)};
- if (heap_index < 0) {
- return ResultOutOfMemory;
+ num_pages -= pages_per_alloc;
+ }
+ }
}
- // TODO (bunnei): Support multiple managers
- Impl& chosen_manager{managers[pool_index]};
+ // Only succeed if we allocated as many pages as we wanted.
+ R_UNLESS(num_pages == 0, ResultOutOfMemory);
- // Ensure that we don't leave anything un-freed
- auto group_guard = detail::ScopeExit([&] {
- for (const auto& it : page_list.Nodes()) {
- const auto min_num_pages{std::min<size_t>(
- it.GetNumPages(), (chosen_manager.GetEndAddress() - it.GetAddress()) / PageSize)};
- chosen_manager.Free(it.GetAddress(), min_num_pages);
- }
- });
+ // We succeeded!
+ group_guard.Cancel();
+ return ResultSuccess;
+}
- // Keep allocating until we've allocated all our pages
- for (s32 index{heap_index}; index >= 0 && num_pages > 0; index--) {
- const auto pages_per_alloc{KPageHeap::GetBlockNumPages(index)};
+ResultCode KMemoryManager::AllocateAndOpen(KPageLinkedList* out, size_t num_pages, u32 option) {
+ ASSERT(out != nullptr);
+ ASSERT(out->GetNumPages() == 0);
- while (num_pages >= pages_per_alloc) {
- // Allocate a block
- VAddr allocated_block{chosen_manager.AllocateBlock(index, false)};
- if (!allocated_block) {
- break;
- }
+ // Early return if we're allocating no pages.
+ R_SUCCEED_IF(num_pages == 0);
- // Safely add it to our group
- {
- auto block_guard = detail::ScopeExit(
- [&] { chosen_manager.Free(allocated_block, pages_per_alloc); });
+ // Lock the pool that we're allocating from.
+ const auto [pool, dir] = DecodeOption(option);
+ KScopedLightLock lk(pool_locks[static_cast<size_t>(pool)]);
+
+ // Allocate the page group.
+ R_TRY(this->AllocatePageGroupImpl(out, num_pages, pool, dir, false));
+
+ // Open the first reference to the pages.
+ for (const auto& block : out->Nodes()) {
+ PAddr cur_address = block.GetAddress();
+ size_t remaining_pages = block.GetNumPages();
+ while (remaining_pages > 0) {
+ // Get the manager for the current address.
+ auto& manager = this->GetManager(system.Kernel().MemoryLayout(), cur_address);
+
+ // Process part or all of the block.
+ const size_t cur_pages =
+ std::min(remaining_pages, manager.GetPageOffsetToEnd(cur_address));
+ manager.OpenFirst(cur_address, cur_pages);
+
+ // Advance.
+ cur_address += cur_pages * PageSize;
+ remaining_pages -= cur_pages;
+ }
+ }
- if (const ResultCode result{page_list.AddBlock(allocated_block, pages_per_alloc)};
- result.IsError()) {
- return result;
- }
+ return ResultSuccess;
+}
- block_guard.Cancel();
- }
+ResultCode KMemoryManager::AllocateAndOpenForProcess(KPageLinkedList* out, size_t num_pages,
+ u32 option, u64 process_id, u8 fill_pattern) {
+ ASSERT(out != nullptr);
+ ASSERT(out->GetNumPages() == 0);
- num_pages -= pages_per_alloc;
- }
- }
+ // Decode the option.
+ const auto [pool, dir] = DecodeOption(option);
- // Clear allocated memory.
- for (const auto& it : page_list.Nodes()) {
- std::memset(system.DeviceMemory().GetPointer(it.GetAddress()), heap_fill_value,
- it.GetSize());
+ // Allocate the memory.
+ {
+ // Lock the pool that we're allocating from.
+ KScopedLightLock lk(pool_locks[static_cast<size_t>(pool)]);
+
+ // Allocate the page group.
+ R_TRY(this->AllocatePageGroupImpl(out, num_pages, pool, dir, false));
+
+ // Open the first reference to the pages.
+ for (const auto& block : out->Nodes()) {
+ PAddr cur_address = block.GetAddress();
+ size_t remaining_pages = block.GetNumPages();
+ while (remaining_pages > 0) {
+ // Get the manager for the current address.
+ auto& manager = this->GetManager(system.Kernel().MemoryLayout(), cur_address);
+
+ // Process part or all of the block.
+ const size_t cur_pages =
+ std::min(remaining_pages, manager.GetPageOffsetToEnd(cur_address));
+ manager.OpenFirst(cur_address, cur_pages);
+
+ // Advance.
+ cur_address += cur_pages * PageSize;
+ remaining_pages -= cur_pages;
+ }
+ }
}
- // Only succeed if we allocated as many pages as we wanted
- if (num_pages) {
- return ResultOutOfMemory;
+ // Set all the allocated memory.
+ for (const auto& block : out->Nodes()) {
+ std::memset(system.DeviceMemory().GetPointer(block.GetAddress()), fill_pattern,
+ block.GetSize());
}
- // We succeeded!
- group_guard.Cancel();
-
return ResultSuccess;
}
-ResultCode KMemoryManager::Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
- Direction dir, u32 heap_fill_value) {
- // Early return if we're freeing no pages
- if (!num_pages) {
- return ResultSuccess;
+void KMemoryManager::Open(PAddr address, size_t num_pages) {
+ // Repeatedly open references until we've done so for all pages.
+ while (num_pages) {
+ auto& manager = this->GetManager(system.Kernel().MemoryLayout(), address);
+ const size_t cur_pages = std::min(num_pages, manager.GetPageOffsetToEnd(address));
+
+ {
+ KScopedLightLock lk(pool_locks[static_cast<size_t>(manager.GetPool())]);
+ manager.Open(address, cur_pages);
+ }
+
+ num_pages -= cur_pages;
+ address += cur_pages * PageSize;
}
+}
- // Lock the pool that we're freeing from
- const auto pool_index{static_cast<std::size_t>(pool)};
- std::lock_guard lock{pool_locks[pool_index]};
+void KMemoryManager::Close(PAddr address, size_t num_pages) {
+ // Repeatedly close references until we've done so for all pages.
+ while (num_pages) {
+ auto& manager = this->GetManager(system.Kernel().MemoryLayout(), address);
+ const size_t cur_pages = std::min(num_pages, manager.GetPageOffsetToEnd(address));
- // TODO (bunnei): Support multiple managers
- Impl& chosen_manager{managers[pool_index]};
+ {
+ KScopedLightLock lk(pool_locks[static_cast<size_t>(manager.GetPool())]);
+ manager.Close(address, cur_pages);
+ }
- // Free all of the pages
- for (const auto& it : page_list.Nodes()) {
- const auto min_num_pages{std::min<size_t>(
- it.GetNumPages(), (chosen_manager.GetEndAddress() - it.GetAddress()) / PageSize)};
- chosen_manager.Free(it.GetAddress(), min_num_pages);
+ num_pages -= cur_pages;
+ address += cur_pages * PageSize;
}
+}
- return ResultSuccess;
+void KMemoryManager::Close(const KPageLinkedList& pg) {
+ for (const auto& node : pg.Nodes()) {
+ Close(node.GetAddress(), node.GetNumPages());
+ }
+}
+void KMemoryManager::Open(const KPageLinkedList& pg) {
+ for (const auto& node : pg.Nodes()) {
+ Open(node.GetAddress(), node.GetNumPages());
+ }
+}
+
+size_t KMemoryManager::Impl::Initialize(PAddr address, size_t size, VAddr management,
+ VAddr management_end, Pool p) {
+ // Calculate management sizes.
+ const size_t ref_count_size = (size / PageSize) * sizeof(u16);
+ const size_t optimize_map_size = CalculateOptimizedProcessOverheadSize(size);
+ const size_t manager_size = Common::AlignUp(optimize_map_size + ref_count_size, PageSize);
+ const size_t page_heap_size = KPageHeap::CalculateManagementOverheadSize(size);
+ const size_t total_management_size = manager_size + page_heap_size;
+ ASSERT(manager_size <= total_management_size);
+ ASSERT(management + total_management_size <= management_end);
+ ASSERT(Common::IsAligned(total_management_size, PageSize));
+
+ // Setup region.
+ pool = p;
+ management_region = management;
+ page_reference_counts.resize(
+ Kernel::Board::Nintendo::Nx::KSystemControl::Init::GetIntendedMemorySize() / PageSize);
+ ASSERT(Common::IsAligned(management_region, PageSize));
+
+ // Initialize the manager's KPageHeap.
+ heap.Initialize(address, size, management + manager_size, page_heap_size);
+
+ return total_management_size;
}
-std::size_t KMemoryManager::Impl::CalculateManagementOverheadSize(std::size_t region_size) {
- const std::size_t ref_count_size = (region_size / PageSize) * sizeof(u16);
- const std::size_t optimize_map_size =
+size_t KMemoryManager::Impl::CalculateManagementOverheadSize(size_t region_size) {
+ const size_t ref_count_size = (region_size / PageSize) * sizeof(u16);
+ const size_t optimize_map_size =
(Common::AlignUp((region_size / PageSize), Common::BitSize<u64>()) /
Common::BitSize<u64>()) *
sizeof(u64);
- const std::size_t manager_meta_size =
- Common::AlignUp(optimize_map_size + ref_count_size, PageSize);
- const std::size_t page_heap_size = KPageHeap::CalculateManagementOverheadSize(region_size);
+ const size_t manager_meta_size = Common::AlignUp(optimize_map_size + ref_count_size, PageSize);
+ const size_t page_heap_size = KPageHeap::CalculateManagementOverheadSize(region_size);
return manager_meta_size + page_heap_size;
}
diff --git a/src/core/hle/kernel/k_memory_manager.h b/src/core/hle/kernel/k_memory_manager.h
index abd6c8ace..18775b262 100644
--- a/src/core/hle/kernel/k_memory_manager.h
+++ b/src/core/hle/kernel/k_memory_manager.h
@@ -5,10 +5,12 @@
#pragma once
#include <array>
-#include <mutex>
#include <tuple>
+#include "common/common_funcs.h"
#include "common/common_types.h"
+#include "core/hle/kernel/k_light_lock.h"
+#include "core/hle/kernel/k_memory_layout.h"
#include "core/hle/kernel/k_page_heap.h"
#include "core/hle/result.h"
@@ -20,8 +22,11 @@ namespace Kernel {
class KPageLinkedList;
-class KMemoryManager final : NonCopyable {
+class KMemoryManager final {
public:
+ YUZU_NON_COPYABLE(KMemoryManager);
+ YUZU_NON_MOVEABLE(KMemoryManager);
+
enum class Pool : u32 {
Application = 0,
Applet = 1,
@@ -48,22 +53,33 @@ public:
explicit KMemoryManager(Core::System& system_);
- constexpr std::size_t GetSize(Pool pool) const {
- return managers[static_cast<std::size_t>(pool)].GetSize();
+ void Initialize(VAddr management_region, size_t management_region_size);
+
+ constexpr size_t GetSize(Pool pool) const {
+ constexpr Direction GetSizeDirection = Direction::FromFront;
+ size_t total = 0;
+ for (auto* manager = this->GetFirstManager(pool, GetSizeDirection); manager != nullptr;
+ manager = this->GetNextManager(manager, GetSizeDirection)) {
+ total += manager->GetSize();
+ }
+ return total;
}
- void InitializeManager(Pool pool, u64 start_address, u64 end_address);
+ PAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option);
+ ResultCode AllocateAndOpen(KPageLinkedList* out, size_t num_pages, u32 option);
+ ResultCode AllocateAndOpenForProcess(KPageLinkedList* out, size_t num_pages, u32 option,
+ u64 process_id, u8 fill_pattern);
+
+ static constexpr size_t MaxManagerCount = 10;
- VAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option);
- ResultCode Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, Direction dir,
- u32 heap_fill_value = 0);
- ResultCode Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool, Direction dir,
- u32 heap_fill_value = 0);
+ void Close(PAddr address, size_t num_pages);
+ void Close(const KPageLinkedList& pg);
- static constexpr std::size_t MaxManagerCount = 10;
+ void Open(PAddr address, size_t num_pages);
+ void Open(const KPageLinkedList& pg);
public:
- static std::size_t CalculateManagementOverheadSize(std::size_t region_size) {
+ static size_t CalculateManagementOverheadSize(size_t region_size) {
return Impl::CalculateManagementOverheadSize(region_size);
}
@@ -88,38 +104,34 @@ public:
}
private:
- class Impl final : NonCopyable {
- private:
- using RefCount = u16;
-
- private:
- KPageHeap heap;
- Pool pool{};
-
+ class Impl final {
public:
- static std::size_t CalculateManagementOverheadSize(std::size_t region_size);
-
- static constexpr std::size_t CalculateOptimizedProcessOverheadSize(
- std::size_t region_size) {
- return (Common::AlignUp((region_size / PageSize), Common::BitSize<u64>()) /
- Common::BitSize<u64>()) *
- sizeof(u64);
- }
+ YUZU_NON_COPYABLE(Impl);
+ YUZU_NON_MOVEABLE(Impl);
- public:
Impl() = default;
+ ~Impl() = default;
- std::size_t Initialize(Pool new_pool, u64 start_address, u64 end_address);
+ size_t Initialize(PAddr address, size_t size, VAddr management, VAddr management_end,
+ Pool p);
VAddr AllocateBlock(s32 index, bool random) {
return heap.AllocateBlock(index, random);
}
- void Free(VAddr addr, std::size_t num_pages) {
+ void Free(VAddr addr, size_t num_pages) {
heap.Free(addr, num_pages);
}
- constexpr std::size_t GetSize() const {
+ void SetInitialUsedHeapSize(size_t reserved_size) {
+ heap.SetInitialUsedSize(reserved_size);
+ }
+
+ constexpr Pool GetPool() const {
+ return pool;
+ }
+
+ constexpr size_t GetSize() const {
return heap.GetSize();
}
@@ -130,12 +142,137 @@ private:
constexpr VAddr GetEndAddress() const {
return heap.GetEndAddress();
}
+
+ constexpr size_t GetPageOffset(PAddr address) const {
+ return heap.GetPageOffset(address);
+ }
+
+ constexpr size_t GetPageOffsetToEnd(PAddr address) const {
+ return heap.GetPageOffsetToEnd(address);
+ }
+
+ constexpr void SetNext(Impl* n) {
+ next = n;
+ }
+
+ constexpr void SetPrev(Impl* n) {
+ prev = n;
+ }
+
+ constexpr Impl* GetNext() const {
+ return next;
+ }
+
+ constexpr Impl* GetPrev() const {
+ return prev;
+ }
+
+ void OpenFirst(PAddr address, size_t num_pages) {
+ size_t index = this->GetPageOffset(address);
+ const size_t end = index + num_pages;
+ while (index < end) {
+ const RefCount ref_count = (++page_reference_counts[index]);
+ ASSERT(ref_count == 1);
+
+ index++;
+ }
+ }
+
+ void Open(PAddr address, size_t num_pages) {
+ size_t index = this->GetPageOffset(address);
+ const size_t end = index + num_pages;
+ while (index < end) {
+ const RefCount ref_count = (++page_reference_counts[index]);
+ ASSERT(ref_count > 1);
+
+ index++;
+ }
+ }
+
+ void Close(PAddr address, size_t num_pages) {
+ size_t index = this->GetPageOffset(address);
+ const size_t end = index + num_pages;
+
+ size_t free_start = 0;
+ size_t free_count = 0;
+ while (index < end) {
+ ASSERT(page_reference_counts[index] > 0);
+ const RefCount ref_count = (--page_reference_counts[index]);
+
+ // Keep track of how many zero refcounts we see in a row, to minimize calls to free.
+ if (ref_count == 0) {
+ if (free_count > 0) {
+ free_count++;
+ } else {
+ free_start = index;
+ free_count = 1;
+ }
+ } else {
+ if (free_count > 0) {
+ this->Free(heap.GetAddress() + free_start * PageSize, free_count);
+ free_count = 0;
+ }
+ }
+
+ index++;
+ }
+
+ if (free_count > 0) {
+ this->Free(heap.GetAddress() + free_start * PageSize, free_count);
+ }
+ }
+
+ static size_t CalculateManagementOverheadSize(size_t region_size);
+
+ static constexpr size_t CalculateOptimizedProcessOverheadSize(size_t region_size) {
+ return (Common::AlignUp((region_size / PageSize), Common::BitSize<u64>()) /
+ Common::BitSize<u64>()) *
+ sizeof(u64);
+ }
+
+ private:
+ using RefCount = u16;
+
+ KPageHeap heap;
+ std::vector<RefCount> page_reference_counts;
+ VAddr management_region{};
+ Pool pool{};
+ Impl* next{};
+ Impl* prev{};
};
private:
+ Impl& GetManager(const KMemoryLayout& memory_layout, PAddr address) {
+ return managers[memory_layout.GetPhysicalLinearRegion(address).GetAttributes()];
+ }
+
+ const Impl& GetManager(const KMemoryLayout& memory_layout, PAddr address) const {
+ return managers[memory_layout.GetPhysicalLinearRegion(address).GetAttributes()];
+ }
+
+ constexpr Impl* GetFirstManager(Pool pool, Direction dir) const {
+ return dir == Direction::FromBack ? pool_managers_tail[static_cast<size_t>(pool)]
+ : pool_managers_head[static_cast<size_t>(pool)];
+ }
+
+ constexpr Impl* GetNextManager(Impl* cur, Direction dir) const {
+ if (dir == Direction::FromBack) {
+ return cur->GetPrev();
+ } else {
+ return cur->GetNext();
+ }
+ }
+
+ ResultCode AllocatePageGroupImpl(KPageLinkedList* out, size_t num_pages, Pool pool,
+ Direction dir, bool random);
+
+private:
Core::System& system;
- std::array<std::mutex, static_cast<std::size_t>(Pool::Count)> pool_locks;
+ std::array<KLightLock, static_cast<size_t>(Pool::Count)> pool_locks;
+ std::array<Impl*, MaxManagerCount> pool_managers_head{};
+ std::array<Impl*, MaxManagerCount> pool_managers_tail{};
std::array<Impl, MaxManagerCount> managers;
+ size_t num_managers{};
};
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_memory_region.h b/src/core/hle/kernel/k_memory_region.h
index 90ab8fd62..e9bdf4e59 100644
--- a/src/core/hle/kernel/k_memory_region.h
+++ b/src/core/hle/kernel/k_memory_region.h
@@ -5,6 +5,7 @@
#pragma once
#include "common/assert.h"
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "common/intrusive_red_black_tree.h"
#include "core/hle/kernel/k_memory_region_type.h"
@@ -13,11 +14,13 @@ namespace Kernel {
class KMemoryRegionAllocator;
-class KMemoryRegion final : public Common::IntrusiveRedBlackTreeBaseNode<KMemoryRegion>,
- NonCopyable {
+class KMemoryRegion final : public Common::IntrusiveRedBlackTreeBaseNode<KMemoryRegion> {
friend class KMemoryRegionTree;
public:
+ YUZU_NON_COPYABLE(KMemoryRegion);
+ YUZU_NON_MOVEABLE(KMemoryRegion);
+
constexpr KMemoryRegion() = default;
constexpr KMemoryRegion(u64 address_, u64 last_address_)
: address{address_}, last_address{last_address_} {}
@@ -29,6 +32,8 @@ public:
: KMemoryRegion(address_, last_address_, std::numeric_limits<u64>::max(), attributes_,
type_id_) {}
+ ~KMemoryRegion() = default;
+
static constexpr int Compare(const KMemoryRegion& lhs, const KMemoryRegion& rhs) {
if (lhs.GetAddress() < rhs.GetAddress()) {
return -1;
@@ -39,16 +44,6 @@ public:
}
}
-private:
- constexpr void Reset(u64 a, u64 la, u64 p, u32 r, u32 t) {
- address = a;
- pair_address = p;
- last_address = la;
- attributes = r;
- type_id = t;
- }
-
-public:
constexpr u64 GetAddress() const {
return address;
}
@@ -108,6 +103,14 @@ public:
}
private:
+ constexpr void Reset(u64 a, u64 la, u64 p, u32 r, u32 t) {
+ address = a;
+ pair_address = p;
+ last_address = la;
+ attributes = r;
+ type_id = t;
+ }
+
u64 address{};
u64 last_address{};
u64 pair_address{};
@@ -115,8 +118,25 @@ private:
u32 type_id{};
};
-class KMemoryRegionTree final : NonCopyable {
+class KMemoryRegionTree final {
+private:
+ using TreeType =
+ Common::IntrusiveRedBlackTreeBaseTraits<KMemoryRegion>::TreeType<KMemoryRegion>;
+
public:
+ YUZU_NON_COPYABLE(KMemoryRegionTree);
+ YUZU_NON_MOVEABLE(KMemoryRegionTree);
+
+ using value_type = TreeType::value_type;
+ using size_type = TreeType::size_type;
+ using difference_type = TreeType::difference_type;
+ using pointer = TreeType::pointer;
+ using const_pointer = TreeType::const_pointer;
+ using reference = TreeType::reference;
+ using const_reference = TreeType::const_reference;
+ using iterator = TreeType::iterator;
+ using const_iterator = TreeType::const_iterator;
+
struct DerivedRegionExtents {
const KMemoryRegion* first_region{};
const KMemoryRegion* last_region{};
@@ -140,29 +160,9 @@ public:
}
};
-private:
- using TreeType =
- Common::IntrusiveRedBlackTreeBaseTraits<KMemoryRegion>::TreeType<KMemoryRegion>;
-
-public:
- using value_type = TreeType::value_type;
- using size_type = TreeType::size_type;
- using difference_type = TreeType::difference_type;
- using pointer = TreeType::pointer;
- using const_pointer = TreeType::const_pointer;
- using reference = TreeType::reference;
- using const_reference = TreeType::const_reference;
- using iterator = TreeType::iterator;
- using const_iterator = TreeType::const_iterator;
-
-private:
- TreeType m_tree{};
- KMemoryRegionAllocator& memory_region_allocator;
-
-public:
explicit KMemoryRegionTree(KMemoryRegionAllocator& memory_region_allocator_);
+ ~KMemoryRegionTree() = default;
-public:
KMemoryRegion* FindModifiable(u64 address) {
if (auto it = this->find(KMemoryRegion(address, address, 0, 0)); it != this->end()) {
return std::addressof(*it);
@@ -241,7 +241,6 @@ public:
return GetDerivedRegionExtents(static_cast<KMemoryRegionType>(type_id));
}
-public:
void InsertDirectly(u64 address, u64 last_address, u32 attr = 0, u32 type_id = 0);
bool Insert(u64 address, size_t size, u32 type_id, u32 new_attr = 0, u32 old_attr = 0);
@@ -252,7 +251,6 @@ public:
return this->GetRandomAlignedRegion(size + 2 * guard_size, alignment, type_id) + guard_size;
}
-public:
// Iterator accessors.
iterator begin() {
return m_tree.begin();
@@ -322,13 +320,21 @@ public:
iterator nfind(const_reference ref) const {
return m_tree.nfind(ref);
}
+
+private:
+ TreeType m_tree{};
+ KMemoryRegionAllocator& memory_region_allocator;
};
-class KMemoryRegionAllocator final : NonCopyable {
+class KMemoryRegionAllocator final {
public:
+ YUZU_NON_COPYABLE(KMemoryRegionAllocator);
+ YUZU_NON_MOVEABLE(KMemoryRegionAllocator);
+
static constexpr size_t MaxMemoryRegions = 200;
constexpr KMemoryRegionAllocator() = default;
+ constexpr ~KMemoryRegionAllocator() = default;
template <typename... Args>
KMemoryRegion* Allocate(Args&&... args) {
diff --git a/src/core/hle/kernel/k_memory_region_type.h b/src/core/hle/kernel/k_memory_region_type.h
index a05e66677..0baeddf51 100644
--- a/src/core/hle/kernel/k_memory_region_type.h
+++ b/src/core/hle/kernel/k_memory_region_type.h
@@ -14,7 +14,8 @@
namespace Kernel {
enum KMemoryRegionType : u32 {
- KMemoryRegionAttr_CarveoutProtected = 0x04000000,
+ KMemoryRegionAttr_CarveoutProtected = 0x02000000,
+ KMemoryRegionAttr_Uncached = 0x04000000,
KMemoryRegionAttr_DidKernelMap = 0x08000000,
KMemoryRegionAttr_ShouldKernelMap = 0x10000000,
KMemoryRegionAttr_UserReadOnly = 0x20000000,
@@ -239,6 +240,11 @@ static_assert(KMemoryRegionType_VirtualDramHeapBase.GetValue() == 0x1A);
static_assert(KMemoryRegionType_VirtualDramKernelPtHeap.GetValue() == 0x2A);
static_assert(KMemoryRegionType_VirtualDramKernelTraceBuffer.GetValue() == 0x4A);
+// UNUSED: .DeriveSparse(2, 2, 0);
+constexpr auto KMemoryRegionType_VirtualDramUnknownDebug =
+ KMemoryRegionType_Dram.DeriveSparse(2, 2, 1);
+static_assert(KMemoryRegionType_VirtualDramUnknownDebug.GetValue() == (0x52));
+
constexpr auto KMemoryRegionType_VirtualDramKernelInitPt =
KMemoryRegionType_VirtualDramHeapBase.Derive(3, 0);
constexpr auto KMemoryRegionType_VirtualDramPoolManagement =
@@ -330,6 +336,8 @@ constexpr KMemoryRegionType GetTypeForVirtualLinearMapping(u32 type_id) {
return KMemoryRegionType_VirtualDramKernelTraceBuffer;
} else if (KMemoryRegionType_DramKernelPtHeap.IsAncestorOf(type_id)) {
return KMemoryRegionType_VirtualDramKernelPtHeap;
+ } else if ((type_id | KMemoryRegionAttr_ShouldKernelMap) == type_id) {
+ return KMemoryRegionType_VirtualDramUnknownDebug;
} else {
return KMemoryRegionType_Dram;
}
diff --git a/src/core/hle/kernel/k_page_buffer.cpp b/src/core/hle/kernel/k_page_buffer.cpp
new file mode 100644
index 000000000..f7df4a9a8
--- /dev/null
+++ b/src/core/hle/kernel/k_page_buffer.cpp
@@ -0,0 +1,19 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/alignment.h"
+#include "common/assert.h"
+#include "core/core.h"
+#include "core/device_memory.h"
+#include "core/hle/kernel/k_page_buffer.h"
+#include "core/hle/kernel/memory_types.h"
+
+namespace Kernel {
+
+KPageBuffer* KPageBuffer::FromPhysicalAddress(Core::System& system, PAddr phys_addr) {
+ ASSERT(Common::IsAligned(phys_addr, PageSize));
+ return reinterpret_cast<KPageBuffer*>(system.DeviceMemory().GetPointer(phys_addr));
+}
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/k_page_buffer.h b/src/core/hle/kernel/k_page_buffer.h
new file mode 100644
index 000000000..6ff3c1568
--- /dev/null
+++ b/src/core/hle/kernel/k_page_buffer.h
@@ -0,0 +1,29 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <array>
+
+#include "common/common_types.h"
+#include "core/device_memory.h"
+#include "core/hle/kernel/memory_types.h"
+#include "core/hle/kernel/slab_helpers.h"
+
+namespace Kernel {
+
+class KPageBuffer final : public KSlabAllocated<KPageBuffer> {
+public:
+ KPageBuffer() = default;
+
+ static KPageBuffer* FromPhysicalAddress(Core::System& system, PAddr phys_addr);
+
+private:
+ [[maybe_unused]] alignas(PageSize) std::array<u8, PageSize> m_buffer{};
+};
+
+static_assert(sizeof(KPageBuffer) == PageSize);
+static_assert(alignof(KPageBuffer) == PageSize);
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/k_page_heap.cpp b/src/core/hle/kernel/k_page_heap.cpp
index 29d996d62..97a5890a0 100644
--- a/src/core/hle/kernel/k_page_heap.cpp
+++ b/src/core/hle/kernel/k_page_heap.cpp
@@ -7,35 +7,51 @@
namespace Kernel {
-void KPageHeap::Initialize(VAddr address, std::size_t size, std::size_t metadata_size) {
- // Check our assumptions
- ASSERT(Common::IsAligned((address), PageSize));
+void KPageHeap::Initialize(PAddr address, size_t size, VAddr management_address,
+ size_t management_size, const size_t* block_shifts,
+ size_t num_block_shifts) {
+ // Check our assumptions.
+ ASSERT(Common::IsAligned(address, PageSize));
ASSERT(Common::IsAligned(size, PageSize));
+ ASSERT(0 < num_block_shifts && num_block_shifts <= NumMemoryBlockPageShifts);
+ const VAddr management_end = management_address + management_size;
- // Set our members
- heap_address = address;
- heap_size = size;
-
- // Setup bitmaps
- metadata.resize(metadata_size / sizeof(u64));
- u64* cur_bitmap_storage{metadata.data()};
- for (std::size_t i = 0; i < MemoryBlockPageShifts.size(); i++) {
- const std::size_t cur_block_shift{MemoryBlockPageShifts[i]};
- const std::size_t next_block_shift{
- (i != MemoryBlockPageShifts.size() - 1) ? MemoryBlockPageShifts[i + 1] : 0};
- cur_bitmap_storage = blocks[i].Initialize(heap_address, heap_size, cur_block_shift,
- next_block_shift, cur_bitmap_storage);
+ // Set our members.
+ m_heap_address = address;
+ m_heap_size = size;
+ m_num_blocks = num_block_shifts;
+
+ // Setup bitmaps.
+ m_management_data.resize(management_size / sizeof(u64));
+ u64* cur_bitmap_storage{m_management_data.data()};
+ for (size_t i = 0; i < num_block_shifts; i++) {
+ const size_t cur_block_shift = block_shifts[i];
+ const size_t next_block_shift = (i != num_block_shifts - 1) ? block_shifts[i + 1] : 0;
+ cur_bitmap_storage = m_blocks[i].Initialize(m_heap_address, m_heap_size, cur_block_shift,
+ next_block_shift, cur_bitmap_storage);
}
+
+ // Ensure we didn't overextend our bounds.
+ ASSERT(VAddr(cur_bitmap_storage) <= management_end);
+}
+
+size_t KPageHeap::GetNumFreePages() const {
+ size_t num_free = 0;
+
+ for (size_t i = 0; i < m_num_blocks; i++) {
+ num_free += m_blocks[i].GetNumFreePages();
+ }
+
+ return num_free;
}
-VAddr KPageHeap::AllocateBlock(s32 index, bool random) {
- const std::size_t needed_size{blocks[index].GetSize()};
+PAddr KPageHeap::AllocateBlock(s32 index, bool random) {
+ const size_t needed_size = m_blocks[index].GetSize();
- for (s32 i{index}; i < static_cast<s32>(MemoryBlockPageShifts.size()); i++) {
- if (const VAddr addr{blocks[i].PopBlock(random)}; addr) {
- if (const std::size_t allocated_size{blocks[i].GetSize()};
- allocated_size > needed_size) {
- Free(addr + needed_size, (allocated_size - needed_size) / PageSize);
+ for (s32 i = index; i < static_cast<s32>(m_num_blocks); i++) {
+ if (const PAddr addr = m_blocks[i].PopBlock(random); addr != 0) {
+ if (const size_t allocated_size = m_blocks[i].GetSize(); allocated_size > needed_size) {
+ this->Free(addr + needed_size, (allocated_size - needed_size) / PageSize);
}
return addr;
}
@@ -44,34 +60,34 @@ VAddr KPageHeap::AllocateBlock(s32 index, bool random) {
return 0;
}
-void KPageHeap::FreeBlock(VAddr block, s32 index) {
+void KPageHeap::FreeBlock(PAddr block, s32 index) {
do {
- block = blocks[index++].PushBlock(block);
+ block = m_blocks[index++].PushBlock(block);
} while (block != 0);
}
-void KPageHeap::Free(VAddr addr, std::size_t num_pages) {
- // Freeing no pages is a no-op
+void KPageHeap::Free(PAddr addr, size_t num_pages) {
+ // Freeing no pages is a no-op.
if (num_pages == 0) {
return;
}
- // Find the largest block size that we can free, and free as many as possible
- s32 big_index{static_cast<s32>(MemoryBlockPageShifts.size()) - 1};
- const VAddr start{addr};
- const VAddr end{(num_pages * PageSize) + addr};
- VAddr before_start{start};
- VAddr before_end{start};
- VAddr after_start{end};
- VAddr after_end{end};
+ // Find the largest block size that we can free, and free as many as possible.
+ s32 big_index = static_cast<s32>(m_num_blocks) - 1;
+ const PAddr start = addr;
+ const PAddr end = addr + num_pages * PageSize;
+ PAddr before_start = start;
+ PAddr before_end = start;
+ PAddr after_start = end;
+ PAddr after_end = end;
while (big_index >= 0) {
- const std::size_t block_size{blocks[big_index].GetSize()};
- const VAddr big_start{Common::AlignUp((start), block_size)};
- const VAddr big_end{Common::AlignDown((end), block_size)};
+ const size_t block_size = m_blocks[big_index].GetSize();
+ const PAddr big_start = Common::AlignUp(start, block_size);
+ const PAddr big_end = Common::AlignDown(end, block_size);
if (big_start < big_end) {
- // Free as many big blocks as we can
- for (auto block{big_start}; block < big_end; block += block_size) {
- FreeBlock(block, big_index);
+ // Free as many big blocks as we can.
+ for (auto block = big_start; block < big_end; block += block_size) {
+ this->FreeBlock(block, big_index);
}
before_end = big_start;
after_start = big_end;
@@ -81,31 +97,31 @@ void KPageHeap::Free(VAddr addr, std::size_t num_pages) {
}
ASSERT(big_index >= 0);
- // Free space before the big blocks
- for (s32 i{big_index - 1}; i >= 0; i--) {
- const std::size_t block_size{blocks[i].GetSize()};
+ // Free space before the big blocks.
+ for (s32 i = big_index - 1; i >= 0; i--) {
+ const size_t block_size = m_blocks[i].GetSize();
while (before_start + block_size <= before_end) {
before_end -= block_size;
- FreeBlock(before_end, i);
+ this->FreeBlock(before_end, i);
}
}
- // Free space after the big blocks
- for (s32 i{big_index - 1}; i >= 0; i--) {
- const std::size_t block_size{blocks[i].GetSize()};
+ // Free space after the big blocks.
+ for (s32 i = big_index - 1; i >= 0; i--) {
+ const size_t block_size = m_blocks[i].GetSize();
while (after_start + block_size <= after_end) {
- FreeBlock(after_start, i);
+ this->FreeBlock(after_start, i);
after_start += block_size;
}
}
}
-std::size_t KPageHeap::CalculateManagementOverheadSize(std::size_t region_size) {
- std::size_t overhead_size = 0;
- for (std::size_t i = 0; i < MemoryBlockPageShifts.size(); i++) {
- const std::size_t cur_block_shift{MemoryBlockPageShifts[i]};
- const std::size_t next_block_shift{
- (i != MemoryBlockPageShifts.size() - 1) ? MemoryBlockPageShifts[i + 1] : 0};
+size_t KPageHeap::CalculateManagementOverheadSize(size_t region_size, const size_t* block_shifts,
+ size_t num_block_shifts) {
+ size_t overhead_size = 0;
+ for (size_t i = 0; i < num_block_shifts; i++) {
+ const size_t cur_block_shift = block_shifts[i];
+ const size_t next_block_shift = (i != num_block_shifts - 1) ? block_shifts[i + 1] : 0;
overhead_size += KPageHeap::Block::CalculateManagementOverheadSize(
region_size, cur_block_shift, next_block_shift);
}
diff --git a/src/core/hle/kernel/k_page_heap.h b/src/core/hle/kernel/k_page_heap.h
index 8d9f30523..60fff766b 100644
--- a/src/core/hle/kernel/k_page_heap.h
+++ b/src/core/hle/kernel/k_page_heap.h
@@ -8,183 +8,210 @@
#include <vector>
#include "common/alignment.h"
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/hle/kernel/k_page_bitmap.h"
#include "core/hle/kernel/memory_types.h"
namespace Kernel {
-class KPageHeap final : NonCopyable {
+class KPageHeap final {
public:
- static constexpr s32 GetAlignedBlockIndex(std::size_t num_pages, std::size_t align_pages) {
- const auto target_pages{std::max(num_pages, align_pages)};
- for (std::size_t i = 0; i < NumMemoryBlockPageShifts; i++) {
- if (target_pages <=
- (static_cast<std::size_t>(1) << MemoryBlockPageShifts[i]) / PageSize) {
+ YUZU_NON_COPYABLE(KPageHeap);
+ YUZU_NON_MOVEABLE(KPageHeap);
+
+ KPageHeap() = default;
+ ~KPageHeap() = default;
+
+ constexpr PAddr GetAddress() const {
+ return m_heap_address;
+ }
+ constexpr size_t GetSize() const {
+ return m_heap_size;
+ }
+ constexpr PAddr GetEndAddress() const {
+ return this->GetAddress() + this->GetSize();
+ }
+ constexpr size_t GetPageOffset(PAddr block) const {
+ return (block - this->GetAddress()) / PageSize;
+ }
+ constexpr size_t GetPageOffsetToEnd(PAddr block) const {
+ return (this->GetEndAddress() - block) / PageSize;
+ }
+
+ void Initialize(PAddr heap_address, size_t heap_size, VAddr management_address,
+ size_t management_size) {
+ return this->Initialize(heap_address, heap_size, management_address, management_size,
+ MemoryBlockPageShifts.data(), NumMemoryBlockPageShifts);
+ }
+
+ size_t GetFreeSize() const {
+ return this->GetNumFreePages() * PageSize;
+ }
+
+ void SetInitialUsedSize(size_t reserved_size) {
+ // Check that the reserved size is valid.
+ const size_t free_size = this->GetNumFreePages() * PageSize;
+ ASSERT(m_heap_size >= free_size + reserved_size);
+
+ // Set the initial used size.
+ m_initial_used_size = m_heap_size - free_size - reserved_size;
+ }
+
+ PAddr AllocateBlock(s32 index, bool random);
+ void Free(PAddr addr, size_t num_pages);
+
+ static size_t CalculateManagementOverheadSize(size_t region_size) {
+ return CalculateManagementOverheadSize(region_size, MemoryBlockPageShifts.data(),
+ NumMemoryBlockPageShifts);
+ }
+
+ static constexpr s32 GetAlignedBlockIndex(size_t num_pages, size_t align_pages) {
+ const size_t target_pages = std::max(num_pages, align_pages);
+ for (size_t i = 0; i < NumMemoryBlockPageShifts; i++) {
+ if (target_pages <= (size_t(1) << MemoryBlockPageShifts[i]) / PageSize) {
return static_cast<s32>(i);
}
}
return -1;
}
- static constexpr s32 GetBlockIndex(std::size_t num_pages) {
- for (s32 i{static_cast<s32>(NumMemoryBlockPageShifts) - 1}; i >= 0; i--) {
- if (num_pages >= (static_cast<std::size_t>(1) << MemoryBlockPageShifts[i]) / PageSize) {
+ static constexpr s32 GetBlockIndex(size_t num_pages) {
+ for (s32 i = static_cast<s32>(NumMemoryBlockPageShifts) - 1; i >= 0; i--) {
+ if (num_pages >= (size_t(1) << MemoryBlockPageShifts[i]) / PageSize) {
return i;
}
}
return -1;
}
- static constexpr std::size_t GetBlockSize(std::size_t index) {
- return static_cast<std::size_t>(1) << MemoryBlockPageShifts[index];
+ static constexpr size_t GetBlockSize(size_t index) {
+ return size_t(1) << MemoryBlockPageShifts[index];
}
- static constexpr std::size_t GetBlockNumPages(std::size_t index) {
+ static constexpr size_t GetBlockNumPages(size_t index) {
return GetBlockSize(index) / PageSize;
}
private:
- static constexpr std::size_t NumMemoryBlockPageShifts{7};
- static constexpr std::array<std::size_t, NumMemoryBlockPageShifts> MemoryBlockPageShifts{
- 0xC, 0x10, 0x15, 0x16, 0x19, 0x1D, 0x1E,
- };
-
- class Block final : NonCopyable {
- private:
- KPageBitmap bitmap;
- VAddr heap_address{};
- uintptr_t end_offset{};
- std::size_t block_shift{};
- std::size_t next_block_shift{};
-
+ class Block final {
public:
+ YUZU_NON_COPYABLE(Block);
+ YUZU_NON_MOVEABLE(Block);
+
Block() = default;
+ ~Block() = default;
- constexpr std::size_t GetShift() const {
- return block_shift;
+ constexpr size_t GetShift() const {
+ return m_block_shift;
}
- constexpr std::size_t GetNextShift() const {
- return next_block_shift;
+ constexpr size_t GetNextShift() const {
+ return m_next_block_shift;
}
- constexpr std::size_t GetSize() const {
- return static_cast<std::size_t>(1) << GetShift();
+ constexpr size_t GetSize() const {
+ return u64(1) << this->GetShift();
}
- constexpr std::size_t GetNumPages() const {
- return GetSize() / PageSize;
+ constexpr size_t GetNumPages() const {
+ return this->GetSize() / PageSize;
}
- constexpr std::size_t GetNumFreeBlocks() const {
- return bitmap.GetNumBits();
+ constexpr size_t GetNumFreeBlocks() const {
+ return m_bitmap.GetNumBits();
}
- constexpr std::size_t GetNumFreePages() const {
- return GetNumFreeBlocks() * GetNumPages();
+ constexpr size_t GetNumFreePages() const {
+ return this->GetNumFreeBlocks() * this->GetNumPages();
}
- u64* Initialize(VAddr addr, std::size_t size, std::size_t bs, std::size_t nbs,
- u64* bit_storage) {
- // Set shifts
- block_shift = bs;
- next_block_shift = nbs;
-
- // Align up the address
- VAddr end{addr + size};
- const auto align{(next_block_shift != 0) ? (1ULL << next_block_shift)
- : (1ULL << block_shift)};
- addr = Common::AlignDown((addr), align);
- end = Common::AlignUp((end), align);
-
- heap_address = addr;
- end_offset = (end - addr) / (1ULL << block_shift);
- return bitmap.Initialize(bit_storage, end_offset);
+ u64* Initialize(PAddr addr, size_t size, size_t bs, size_t nbs, u64* bit_storage) {
+ // Set shifts.
+ m_block_shift = bs;
+ m_next_block_shift = nbs;
+
+ // Align up the address.
+ PAddr end = addr + size;
+ const size_t align = (m_next_block_shift != 0) ? (u64(1) << m_next_block_shift)
+ : (u64(1) << m_block_shift);
+ addr = Common::AlignDown(addr, align);
+ end = Common::AlignUp(end, align);
+
+ m_heap_address = addr;
+ m_end_offset = (end - addr) / (u64(1) << m_block_shift);
+ return m_bitmap.Initialize(bit_storage, m_end_offset);
}
- VAddr PushBlock(VAddr address) {
- // Set the bit for the free block
- std::size_t offset{(address - heap_address) >> GetShift()};
- bitmap.SetBit(offset);
+ PAddr PushBlock(PAddr address) {
+ // Set the bit for the free block.
+ size_t offset = (address - m_heap_address) >> this->GetShift();
+ m_bitmap.SetBit(offset);
- // If we have a next shift, try to clear the blocks below and return the address
- if (GetNextShift()) {
- const auto diff{1ULL << (GetNextShift() - GetShift())};
+ // If we have a next shift, try to clear the blocks below this one and return the new
+ // address.
+ if (this->GetNextShift()) {
+ const size_t diff = u64(1) << (this->GetNextShift() - this->GetShift());
offset = Common::AlignDown(offset, diff);
- if (bitmap.ClearRange(offset, diff)) {
- return heap_address + (offset << GetShift());
+ if (m_bitmap.ClearRange(offset, diff)) {
+ return m_heap_address + (offset << this->GetShift());
}
}
- // We couldn't coalesce, or we're already as big as possible
- return 0;
+ // We couldn't coalesce, or we're already as big as possible.
+ return {};
}
- VAddr PopBlock(bool random) {
- // Find a free block
- const s64 soffset{bitmap.FindFreeBlock(random)};
+ PAddr PopBlock(bool random) {
+ // Find a free block.
+ s64 soffset = m_bitmap.FindFreeBlock(random);
if (soffset < 0) {
- return 0;
+ return {};
}
- const auto offset{static_cast<std::size_t>(soffset)};
+ const size_t offset = static_cast<size_t>(soffset);
- // Update our tracking and return it
- bitmap.ClearBit(offset);
- return heap_address + (offset << GetShift());
+ // Update our tracking and return it.
+ m_bitmap.ClearBit(offset);
+ return m_heap_address + (offset << this->GetShift());
}
public:
- static constexpr std::size_t CalculateManagementOverheadSize(std::size_t region_size,
- std::size_t cur_block_shift,
- std::size_t next_block_shift) {
- const auto cur_block_size{(1ULL << cur_block_shift)};
- const auto next_block_size{(1ULL << next_block_shift)};
- const auto align{(next_block_shift != 0) ? next_block_size : cur_block_size};
+ static constexpr size_t CalculateManagementOverheadSize(size_t region_size,
+ size_t cur_block_shift,
+ size_t next_block_shift) {
+ const size_t cur_block_size = (u64(1) << cur_block_shift);
+ const size_t next_block_size = (u64(1) << next_block_shift);
+ const size_t align = (next_block_shift != 0) ? next_block_size : cur_block_size;
return KPageBitmap::CalculateManagementOverheadSize(
(align * 2 + Common::AlignUp(region_size, align)) / cur_block_size);
}
- };
-
-public:
- KPageHeap() = default;
-
- constexpr VAddr GetAddress() const {
- return heap_address;
- }
- constexpr std::size_t GetSize() const {
- return heap_size;
- }
- constexpr VAddr GetEndAddress() const {
- return GetAddress() + GetSize();
- }
- constexpr std::size_t GetPageOffset(VAddr block) const {
- return (block - GetAddress()) / PageSize;
- }
- void Initialize(VAddr heap_address, std::size_t heap_size, std::size_t metadata_size);
- VAddr AllocateBlock(s32 index, bool random);
- void Free(VAddr addr, std::size_t num_pages);
-
- void UpdateUsedSize() {
- used_size = heap_size - (GetNumFreePages() * PageSize);
- }
-
- static std::size_t CalculateManagementOverheadSize(std::size_t region_size);
+ private:
+ KPageBitmap m_bitmap;
+ PAddr m_heap_address{};
+ uintptr_t m_end_offset{};
+ size_t m_block_shift{};
+ size_t m_next_block_shift{};
+ };
private:
- constexpr std::size_t GetNumFreePages() const {
- std::size_t num_free{};
+ void Initialize(PAddr heap_address, size_t heap_size, VAddr management_address,
+ size_t management_size, const size_t* block_shifts, size_t num_block_shifts);
+ size_t GetNumFreePages() const;
- for (const auto& block : blocks) {
- num_free += block.GetNumFreePages();
- }
+ void FreeBlock(PAddr block, s32 index);
- return num_free;
- }
+ static constexpr size_t NumMemoryBlockPageShifts{7};
+ static constexpr std::array<size_t, NumMemoryBlockPageShifts> MemoryBlockPageShifts{
+ 0xC, 0x10, 0x15, 0x16, 0x19, 0x1D, 0x1E,
+ };
- void FreeBlock(VAddr block, s32 index);
+private:
+ static size_t CalculateManagementOverheadSize(size_t region_size, const size_t* block_shifts,
+ size_t num_block_shifts);
- VAddr heap_address{};
- std::size_t heap_size{};
- std::size_t used_size{};
- std::array<Block, NumMemoryBlockPageShifts> blocks{};
- std::vector<u64> metadata;
+private:
+ PAddr m_heap_address{};
+ size_t m_heap_size{};
+ size_t m_initial_used_size{};
+ size_t m_num_blocks{};
+ std::array<Block, NumMemoryBlockPageShifts> m_blocks{};
+ std::vector<u64> m_management_data;
};
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_page_table.cpp b/src/core/hle/kernel/k_page_table.cpp
index 2ebbc0819..02d93b12e 100644
--- a/src/core/hle/kernel/k_page_table.cpp
+++ b/src/core/hle/kernel/k_page_table.cpp
@@ -41,27 +41,12 @@ constexpr std::size_t GetAddressSpaceWidthFromType(FileSys::ProgramAddressSpaceT
}
}
-constexpr u64 GetAddressInRange(const KMemoryInfo& info, VAddr addr) {
- if (info.GetAddress() < addr) {
- return addr;
- }
- return info.GetAddress();
-}
-
-constexpr std::size_t GetSizeInRange(const KMemoryInfo& info, VAddr start, VAddr end) {
- std::size_t size{info.GetSize()};
- if (info.GetAddress() < start) {
- size -= start - info.GetAddress();
- }
- if (info.GetEndAddress() > end) {
- size -= info.GetEndAddress() - end;
- }
- return size;
-}
-
} // namespace
-KPageTable::KPageTable(Core::System& system_) : system{system_} {}
+KPageTable::KPageTable(Core::System& system_)
+ : general_lock{system_.Kernel()}, map_physical_memory_lock{system_.Kernel()}, system{system_} {}
+
+KPageTable::~KPageTable() = default;
ResultCode KPageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_type,
bool enable_aslr, VAddr code_addr,
@@ -282,96 +267,228 @@ ResultCode KPageTable::MapProcessCode(VAddr addr, std::size_t num_pages, KMemory
R_UNLESS(this->CanContain(addr, size, state), ResultInvalidCurrentMemory);
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Verify that the destination memory is unmapped.
R_TRY(this->CheckMemoryState(addr, size, KMemoryState::All, KMemoryState::Free,
KMemoryPermission::None, KMemoryPermission::None,
KMemoryAttribute::None, KMemoryAttribute::None));
+ KPageLinkedList pg;
+ R_TRY(system.Kernel().MemoryManager().AllocateAndOpen(
+ &pg, num_pages,
+ KMemoryManager::EncodeOption(KMemoryManager::Pool::Application, allocation_option)));
- KPageLinkedList page_linked_list;
- R_TRY(system.Kernel().MemoryManager().Allocate(page_linked_list, num_pages, memory_pool,
- allocation_option));
- R_TRY(Operate(addr, num_pages, page_linked_list, OperationType::MapGroup));
+ R_TRY(Operate(addr, num_pages, pg, OperationType::MapGroup));
block_manager->Update(addr, num_pages, state, perm);
return ResultSuccess;
}
-ResultCode KPageTable::MapCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
-
- const std::size_t num_pages{size / PageSize};
+ResultCode KPageTable::MapCodeMemory(VAddr dst_address, VAddr src_address, std::size_t size) {
+ // Validate the mapping request.
+ R_UNLESS(this->CanContain(dst_address, size, KMemoryState::AliasCode),
+ ResultInvalidMemoryRegion);
- KMemoryState state{};
- KMemoryPermission perm{};
- CASCADE_CODE(CheckMemoryState(&state, &perm, nullptr, nullptr, src_addr, size,
- KMemoryState::All, KMemoryState::Normal, KMemoryPermission::All,
- KMemoryPermission::UserReadWrite, KMemoryAttribute::Mask,
- KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped));
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
- if (IsRegionMapped(dst_addr, size)) {
- return ResultInvalidCurrentMemory;
- }
+ // Verify that the source memory is normal heap.
+ KMemoryState src_state{};
+ KMemoryPermission src_perm{};
+ std::size_t num_src_allocator_blocks{};
+ R_TRY(this->CheckMemoryState(&src_state, &src_perm, nullptr, &num_src_allocator_blocks,
+ src_address, size, KMemoryState::All, KMemoryState::Normal,
+ KMemoryPermission::All, KMemoryPermission::UserReadWrite,
+ KMemoryAttribute::All, KMemoryAttribute::None));
- KPageLinkedList page_linked_list;
- AddRegionToPages(src_addr, num_pages, page_linked_list);
+ // Verify that the destination memory is unmapped.
+ std::size_t num_dst_allocator_blocks{};
+ R_TRY(this->CheckMemoryState(&num_dst_allocator_blocks, dst_address, size, KMemoryState::All,
+ KMemoryState::Free, KMemoryPermission::None,
+ KMemoryPermission::None, KMemoryAttribute::None,
+ KMemoryAttribute::None));
+ // Map the code memory.
{
- auto block_guard = detail::ScopeExit(
- [&] { Operate(src_addr, num_pages, perm, OperationType::ChangePermissions); });
+ // Determine the number of pages being operated on.
+ const std::size_t num_pages = size / PageSize;
- CASCADE_CODE(Operate(src_addr, num_pages, KMemoryPermission::None,
- OperationType::ChangePermissions));
- CASCADE_CODE(MapPages(dst_addr, page_linked_list, KMemoryPermission::None));
+ // Create page groups for the memory being mapped.
+ KPageLinkedList pg;
+ AddRegionToPages(src_address, num_pages, pg);
- block_guard.Cancel();
- }
+ // Reprotect the source as kernel-read/not mapped.
+ const auto new_perm = static_cast<KMemoryPermission>(KMemoryPermission::KernelRead |
+ KMemoryPermission::NotMapped);
+ R_TRY(Operate(src_address, num_pages, new_perm, OperationType::ChangePermissions));
- block_manager->Update(src_addr, num_pages, state, KMemoryPermission::None,
- KMemoryAttribute::Locked);
- block_manager->Update(dst_addr, num_pages, KMemoryState::AliasCode);
+ // Ensure that we unprotect the source pages on failure.
+ auto unprot_guard = SCOPE_GUARD({
+ ASSERT(this->Operate(src_address, num_pages, src_perm, OperationType::ChangePermissions)
+ .IsSuccess());
+ });
+
+ // Map the alias pages.
+ R_TRY(MapPages(dst_address, pg, new_perm));
+
+ // We successfully mapped the alias pages, so we don't need to unprotect the src pages on
+ // failure.
+ unprot_guard.Cancel();
+
+ // Apply the memory block updates.
+ block_manager->Update(src_address, num_pages, src_state, new_perm,
+ KMemoryAttribute::Locked);
+ block_manager->Update(dst_address, num_pages, KMemoryState::AliasCode, new_perm,
+ KMemoryAttribute::None);
+ }
return ResultSuccess;
}
-ResultCode KPageTable::UnmapCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ResultCode KPageTable::UnmapCodeMemory(VAddr dst_address, VAddr src_address, std::size_t size) {
+ // Validate the mapping request.
+ R_UNLESS(this->CanContain(dst_address, size, KMemoryState::AliasCode),
+ ResultInvalidMemoryRegion);
+
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
- if (!size) {
- return ResultSuccess;
+ // Verify that the source memory is locked normal heap.
+ std::size_t num_src_allocator_blocks{};
+ R_TRY(this->CheckMemoryState(std::addressof(num_src_allocator_blocks), src_address, size,
+ KMemoryState::All, KMemoryState::Normal, KMemoryPermission::None,
+ KMemoryPermission::None, KMemoryAttribute::All,
+ KMemoryAttribute::Locked));
+
+ // Verify that the destination memory is aliasable code.
+ std::size_t num_dst_allocator_blocks{};
+ R_TRY(this->CheckMemoryStateContiguous(
+ std::addressof(num_dst_allocator_blocks), dst_address, size, KMemoryState::FlagCanCodeAlias,
+ KMemoryState::FlagCanCodeAlias, KMemoryPermission::None, KMemoryPermission::None,
+ KMemoryAttribute::All, KMemoryAttribute::None));
+
+ // Determine whether any pages being unmapped are code.
+ bool any_code_pages = false;
+ {
+ KMemoryBlockManager::const_iterator it = block_manager->FindIterator(dst_address);
+ while (true) {
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // Check if the memory has code flag.
+ if ((info.GetState() & KMemoryState::FlagCode) != KMemoryState::None) {
+ any_code_pages = true;
+ break;
+ }
+
+ // Check if we're done.
+ if (dst_address + size - 1 <= info.GetLastAddress()) {
+ break;
+ }
+
+ // Advance.
+ ++it;
+ }
}
- const std::size_t num_pages{size / PageSize};
+ // Ensure that we maintain the instruction cache.
+ bool reprotected_pages = false;
+ SCOPE_EXIT({
+ if (reprotected_pages && any_code_pages) {
+ system.InvalidateCpuInstructionCacheRange(dst_address, size);
+ }
+ });
- CASCADE_CODE(CheckMemoryState(nullptr, nullptr, nullptr, nullptr, src_addr, size,
- KMemoryState::All, KMemoryState::Normal, KMemoryPermission::None,
- KMemoryPermission::None, KMemoryAttribute::Mask,
- KMemoryAttribute::Locked, KMemoryAttribute::IpcAndDeviceMapped));
+ // Unmap.
+ {
+ // Determine the number of pages being operated on.
+ const std::size_t num_pages = size / PageSize;
- KMemoryState state{};
- CASCADE_CODE(CheckMemoryState(
- &state, nullptr, nullptr, nullptr, dst_addr, PageSize, KMemoryState::FlagCanCodeAlias,
- KMemoryState::FlagCanCodeAlias, KMemoryPermission::None, KMemoryPermission::None,
- KMemoryAttribute::Mask, KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped));
- CASCADE_CODE(CheckMemoryState(dst_addr, size, KMemoryState::All, state, KMemoryPermission::None,
- KMemoryPermission::None, KMemoryAttribute::Mask,
- KMemoryAttribute::None));
- CASCADE_CODE(Operate(dst_addr, num_pages, KMemoryPermission::None, OperationType::Unmap));
+ // Unmap the aliased copy of the pages.
+ R_TRY(Operate(dst_address, num_pages, KMemoryPermission::None, OperationType::Unmap));
- block_manager->Update(dst_addr, num_pages, KMemoryState::Free);
- block_manager->Update(src_addr, num_pages, KMemoryState::Normal,
- KMemoryPermission::UserReadWrite);
+ // Try to set the permissions for the source pages back to what they should be.
+ R_TRY(Operate(src_address, num_pages, KMemoryPermission::UserReadWrite,
+ OperationType::ChangePermissions));
- system.InvalidateCpuInstructionCacheRange(dst_addr, size);
+ // Apply the memory block updates.
+ block_manager->Update(dst_address, num_pages, KMemoryState::None);
+ block_manager->Update(src_address, num_pages, KMemoryState::Normal,
+ KMemoryPermission::UserReadWrite);
+
+ // Note that we reprotected pages.
+ reprotected_pages = true;
+ }
return ResultSuccess;
}
+VAddr KPageTable::FindFreeArea(VAddr region_start, std::size_t region_num_pages,
+ std::size_t num_pages, std::size_t alignment, std::size_t offset,
+ std::size_t guard_pages) {
+ VAddr address = 0;
+
+ if (num_pages <= region_num_pages) {
+ if (this->IsAslrEnabled()) {
+ // Try to directly find a free area up to 8 times.
+ for (std::size_t i = 0; i < 8; i++) {
+ const std::size_t random_offset =
+ KSystemControl::GenerateRandomRange(
+ 0, (region_num_pages - num_pages - guard_pages) * PageSize / alignment) *
+ alignment;
+ const VAddr candidate =
+ Common::AlignDown((region_start + random_offset), alignment) + offset;
+
+ KMemoryInfo info = this->QueryInfoImpl(candidate);
+
+ if (info.state != KMemoryState::Free) {
+ continue;
+ }
+ if (region_start > candidate) {
+ continue;
+ }
+ if (info.GetAddress() + guard_pages * PageSize > candidate) {
+ continue;
+ }
+
+ const VAddr candidate_end = candidate + (num_pages + guard_pages) * PageSize - 1;
+ if (candidate_end > info.GetLastAddress()) {
+ continue;
+ }
+ if (candidate_end > region_start + region_num_pages * PageSize - 1) {
+ continue;
+ }
+
+ address = candidate;
+ break;
+ }
+ // Fall back to finding the first free area with a random offset.
+ if (address == 0) {
+ // NOTE: Nintendo does not account for guard pages here.
+ // This may theoretically cause an offset to be chosen that cannot be mapped. We
+ // will account for guard pages.
+ const std::size_t offset_pages = KSystemControl::GenerateRandomRange(
+ 0, region_num_pages - num_pages - guard_pages);
+ address = block_manager->FindFreeArea(region_start + offset_pages * PageSize,
+ region_num_pages - offset_pages, num_pages,
+ alignment, offset, guard_pages);
+ }
+ }
+
+ // Find the first free area.
+ if (address == 0) {
+ address = block_manager->FindFreeArea(region_start, region_num_pages, num_pages,
+ alignment, offset, guard_pages);
+ }
+ }
+
+ return address;
+}
+
ResultCode KPageTable::UnmapProcessMemory(VAddr dst_addr, std::size_t size,
KPageTable& src_page_table, VAddr src_addr) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
const std::size_t num_pages{size / PageSize};
@@ -397,150 +514,482 @@ ResultCode KPageTable::UnmapProcessMemory(VAddr dst_addr, std::size_t size,
return ResultSuccess;
}
-ResultCode KPageTable::MapPhysicalMemory(VAddr addr, std::size_t size) {
+ResultCode KPageTable::MapPhysicalMemory(VAddr address, std::size_t size) {
// Lock the physical memory lock.
- std::lock_guard phys_lk(map_physical_memory_lock);
+ KScopedLightLock map_phys_mem_lk(map_physical_memory_lock);
- // Lock the table.
- std::lock_guard lock{page_table_lock};
+ // Calculate the last address for convenience.
+ const VAddr last_address = address + size - 1;
- std::size_t mapped_size{};
- const VAddr end_addr{addr + size};
+ // Define iteration variables.
+ VAddr cur_address;
+ std::size_t mapped_size;
- block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) {
- if (info.state != KMemoryState::Free) {
- mapped_size += GetSizeInRange(info, addr, end_addr);
- }
- });
-
- if (mapped_size == size) {
- return ResultSuccess;
- }
+ // The entire mapping process can be retried.
+ while (true) {
+ // Check if the memory is already mapped.
+ {
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
+
+ // Iterate over the memory.
+ cur_address = address;
+ mapped_size = 0;
+
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
+
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // Check if we're done.
+ if (last_address <= info.GetLastAddress()) {
+ if (info.GetState() != KMemoryState::Free) {
+ mapped_size += (last_address + 1 - cur_address);
+ }
+ break;
+ }
+
+ // Track the memory if it's mapped.
+ if (info.GetState() != KMemoryState::Free) {
+ mapped_size += VAddr(info.GetEndAddress()) - cur_address;
+ }
+
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
+ }
- const std::size_t remaining_size{size - mapped_size};
- const std::size_t remaining_pages{remaining_size / PageSize};
+ // If the size mapped is the size requested, we've nothing to do.
+ R_SUCCEED_IF(size == mapped_size);
+ }
- // Reserve the memory from the process resource limit.
- KScopedResourceReservation memory_reservation(
- system.Kernel().CurrentProcess()->GetResourceLimit(), LimitableResource::PhysicalMemory,
- remaining_size);
- if (!memory_reservation.Succeeded()) {
- LOG_ERROR(Kernel, "Could not reserve remaining {:X} bytes", remaining_size);
- return ResultLimitReached;
+ // Allocate and map the memory.
+ {
+ // Reserve the memory from the process resource limit.
+ KScopedResourceReservation memory_reservation(
+ system.Kernel().CurrentProcess()->GetResourceLimit(),
+ LimitableResource::PhysicalMemory, size - mapped_size);
+ R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached);
+
+ // Allocate pages for the new memory.
+ KPageLinkedList pg;
+ R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess(
+ &pg, (size - mapped_size) / PageSize,
+ KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0));
+
+ // Map the memory.
+ {
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
+
+ size_t num_allocator_blocks = 0;
+
+ // Verify that nobody has mapped memory since we first checked.
+ {
+ // Iterate over the memory.
+ size_t checked_mapped_size = 0;
+ cur_address = address;
+
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
+
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ const bool is_free = info.GetState() == KMemoryState::Free;
+ if (is_free) {
+ if (info.GetAddress() < address) {
+ ++num_allocator_blocks;
+ }
+ if (last_address < info.GetLastAddress()) {
+ ++num_allocator_blocks;
+ }
+ }
+
+ // Check if we're done.
+ if (last_address <= info.GetLastAddress()) {
+ if (!is_free) {
+ checked_mapped_size += (last_address + 1 - cur_address);
+ }
+ break;
+ }
+
+ // Track the memory if it's mapped.
+ if (!is_free) {
+ checked_mapped_size += VAddr(info.GetEndAddress()) - cur_address;
+ }
+
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
+ }
+
+ // If the size now isn't what it was before, somebody mapped or unmapped
+ // concurrently. If this happened, retry.
+ if (mapped_size != checked_mapped_size) {
+ continue;
+ }
+ }
+
+ // Reset the current tracking address, and make sure we clean up on failure.
+ cur_address = address;
+ auto unmap_guard = detail::ScopeExit([&] {
+ if (cur_address > address) {
+ const VAddr last_unmap_address = cur_address - 1;
+
+ // Iterate, unmapping the pages.
+ cur_address = address;
+
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
+
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // If the memory state is free, we mapped it and need to unmap it.
+ if (info.GetState() == KMemoryState::Free) {
+ // Determine the range to unmap.
+ const size_t cur_pages =
+ std::min(VAddr(info.GetEndAddress()) - cur_address,
+ last_unmap_address + 1 - cur_address) /
+ PageSize;
+
+ // Unmap.
+ ASSERT(Operate(cur_address, cur_pages, KMemoryPermission::None,
+ OperationType::Unmap)
+ .IsSuccess());
+ }
+
+ // Check if we're done.
+ if (last_unmap_address <= info.GetLastAddress()) {
+ break;
+ }
+
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
+ }
+ }
+ });
+
+ // Iterate over the memory.
+ auto pg_it = pg.Nodes().begin();
+ PAddr pg_phys_addr = pg_it->GetAddress();
+ size_t pg_pages = pg_it->GetNumPages();
+
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
+
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // If it's unmapped, we need to map it.
+ if (info.GetState() == KMemoryState::Free) {
+ // Determine the range to map.
+ size_t map_pages = std::min(VAddr(info.GetEndAddress()) - cur_address,
+ last_address + 1 - cur_address) /
+ PageSize;
+
+ // While we have pages to map, map them.
+ while (map_pages > 0) {
+ // Check if we're at the end of the physical block.
+ if (pg_pages == 0) {
+ // Ensure there are more pages to map.
+ ASSERT(pg_it != pg.Nodes().end());
+
+ // Advance our physical block.
+ ++pg_it;
+ pg_phys_addr = pg_it->GetAddress();
+ pg_pages = pg_it->GetNumPages();
+ }
+
+ // Map whatever we can.
+ const size_t cur_pages = std::min(pg_pages, map_pages);
+ R_TRY(Operate(cur_address, cur_pages, KMemoryPermission::UserReadWrite,
+ OperationType::Map, pg_phys_addr));
+
+ // Advance.
+ cur_address += cur_pages * PageSize;
+ map_pages -= cur_pages;
+
+ pg_phys_addr += cur_pages * PageSize;
+ pg_pages -= cur_pages;
+ }
+ }
+
+ // Check if we're done.
+ if (last_address <= info.GetLastAddress()) {
+ break;
+ }
+
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
+ }
+
+ // We succeeded, so commit the memory reservation.
+ memory_reservation.Commit();
+
+ // Increase our tracked mapped size.
+ mapped_physical_memory_size += (size - mapped_size);
+
+ // Update the relevant memory blocks.
+ block_manager->Update(address, size / PageSize, KMemoryState::Free,
+ KMemoryPermission::None, KMemoryAttribute::None,
+ KMemoryState::Normal, KMemoryPermission::UserReadWrite,
+ KMemoryAttribute::None);
+
+ // Cancel our guard.
+ unmap_guard.Cancel();
+
+ return ResultSuccess;
+ }
+ }
}
+}
- KPageLinkedList page_linked_list;
+ResultCode KPageTable::UnmapPhysicalMemory(VAddr address, std::size_t size) {
+ // Lock the physical memory lock.
+ KScopedLightLock map_phys_mem_lk(map_physical_memory_lock);
- CASCADE_CODE(system.Kernel().MemoryManager().Allocate(page_linked_list, remaining_pages,
- memory_pool, allocation_option));
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
- // We succeeded, so commit the memory reservation.
- memory_reservation.Commit();
+ // Calculate the last address for convenience.
+ const VAddr last_address = address + size - 1;
- // Map the memory.
- auto node{page_linked_list.Nodes().begin()};
- PAddr map_addr{node->GetAddress()};
- std::size_t src_num_pages{node->GetNumPages()};
- block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) {
- if (info.state != KMemoryState::Free) {
- return;
- }
+ // Define iteration variables.
+ VAddr cur_address = 0;
+ std::size_t mapped_size = 0;
+ std::size_t num_allocator_blocks = 0;
- std::size_t dst_num_pages{GetSizeInRange(info, addr, end_addr) / PageSize};
- VAddr dst_addr{GetAddressInRange(info, addr)};
+ // Check if the memory is mapped.
+ {
+ // Iterate over the memory.
+ cur_address = address;
+ mapped_size = 0;
+
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
+
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // Verify the memory's state.
+ const bool is_normal = info.GetState() == KMemoryState::Normal &&
+ info.GetAttribute() == KMemoryAttribute::None;
+ const bool is_free = info.GetState() == KMemoryState::Free;
+ R_UNLESS(is_normal || is_free, ResultInvalidCurrentMemory);
+
+ if (is_normal) {
+ R_UNLESS(info.GetAttribute() == KMemoryAttribute::None, ResultInvalidCurrentMemory);
+
+ if (info.GetAddress() < address) {
+ ++num_allocator_blocks;
+ }
+ if (last_address < info.GetLastAddress()) {
+ ++num_allocator_blocks;
+ }
+ }
- while (dst_num_pages) {
- if (!src_num_pages) {
- node = std::next(node);
- map_addr = node->GetAddress();
- src_num_pages = node->GetNumPages();
+ // Check if we're done.
+ if (last_address <= info.GetLastAddress()) {
+ if (is_normal) {
+ mapped_size += (last_address + 1 - cur_address);
+ }
+ break;
}
- const std::size_t num_pages{std::min(src_num_pages, dst_num_pages)};
- Operate(dst_addr, num_pages, KMemoryPermission::UserReadWrite, OperationType::Map,
- map_addr);
+ // Track the memory if it's mapped.
+ if (is_normal) {
+ mapped_size += VAddr(info.GetEndAddress()) - cur_address;
+ }
- dst_addr += num_pages * PageSize;
- map_addr += num_pages * PageSize;
- src_num_pages -= num_pages;
- dst_num_pages -= num_pages;
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
}
- });
-
- mapped_physical_memory_size += remaining_size;
- const std::size_t num_pages{size / PageSize};
- block_manager->Update(addr, num_pages, KMemoryState::Free, KMemoryPermission::None,
- KMemoryAttribute::None, KMemoryState::Normal,
- KMemoryPermission::UserReadWrite, KMemoryAttribute::None);
+ // If there's nothing mapped, we've nothing to do.
+ R_SUCCEED_IF(mapped_size == 0);
+ }
- return ResultSuccess;
-}
+ // Make a page group for the unmap region.
+ KPageLinkedList pg;
+ {
+ auto& impl = this->PageTableImpl();
+
+ // Begin traversal.
+ Common::PageTable::TraversalContext context;
+ Common::PageTable::TraversalEntry cur_entry = {.phys_addr = 0, .block_size = 0};
+ bool cur_valid = false;
+ Common::PageTable::TraversalEntry next_entry;
+ bool next_valid = false;
+ size_t tot_size = 0;
+
+ cur_address = address;
+ next_valid = impl.BeginTraversal(next_entry, context, cur_address);
+ next_entry.block_size =
+ (next_entry.block_size - (next_entry.phys_addr & (next_entry.block_size - 1)));
+
+ // Iterate, building the group.
+ while (true) {
+ if ((!next_valid && !cur_valid) ||
+ (next_valid && cur_valid &&
+ next_entry.phys_addr == cur_entry.phys_addr + cur_entry.block_size)) {
+ cur_entry.block_size += next_entry.block_size;
+ } else {
+ if (cur_valid) {
+ // ASSERT(IsHeapPhysicalAddress(cur_entry.phys_addr));
+ R_TRY(pg.AddBlock(cur_entry.phys_addr, cur_entry.block_size / PageSize));
+ }
+
+ // Update tracking variables.
+ tot_size += cur_entry.block_size;
+ cur_entry = next_entry;
+ cur_valid = next_valid;
+ }
-ResultCode KPageTable::UnmapPhysicalMemory(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ if (cur_entry.block_size + tot_size >= size) {
+ break;
+ }
- const VAddr end_addr{addr + size};
- ResultCode result{ResultSuccess};
- std::size_t mapped_size{};
+ next_valid = impl.ContinueTraversal(next_entry, context);
+ }
- // Verify that the region can be unmapped
- block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) {
- if (info.state == KMemoryState::Normal) {
- if (info.attribute != KMemoryAttribute::None) {
- result = ResultInvalidCurrentMemory;
- return;
+ // Add the last block.
+ if (cur_valid) {
+ // ASSERT(IsHeapPhysicalAddress(cur_entry.phys_addr));
+ R_TRY(pg.AddBlock(cur_entry.phys_addr, (size - tot_size) / PageSize));
+ }
+ }
+ ASSERT(pg.GetNumPages() == mapped_size / PageSize);
+
+ // Reset the current tracking address, and make sure we clean up on failure.
+ cur_address = address;
+ auto remap_guard = detail::ScopeExit([&] {
+ if (cur_address > address) {
+ const VAddr last_map_address = cur_address - 1;
+ cur_address = address;
+
+ // Iterate over the memory we unmapped.
+ auto it = block_manager->FindIterator(cur_address);
+ auto pg_it = pg.Nodes().begin();
+ PAddr pg_phys_addr = pg_it->GetAddress();
+ size_t pg_pages = pg_it->GetNumPages();
+
+ while (true) {
+ // Get the memory info for the pages we unmapped, convert to property.
+ const KMemoryInfo info = it->GetMemoryInfo();
+
+ // If the memory is normal, we unmapped it and need to re-map it.
+ if (info.GetState() == KMemoryState::Normal) {
+ // Determine the range to map.
+ size_t map_pages = std::min(VAddr(info.GetEndAddress()) - cur_address,
+ last_map_address + 1 - cur_address) /
+ PageSize;
+
+ // While we have pages to map, map them.
+ while (map_pages > 0) {
+ // Check if we're at the end of the physical block.
+ if (pg_pages == 0) {
+ // Ensure there are more pages to map.
+ ASSERT(pg_it != pg.Nodes().end());
+
+ // Advance our physical block.
+ ++pg_it;
+ pg_phys_addr = pg_it->GetAddress();
+ pg_pages = pg_it->GetNumPages();
+ }
+
+ // Map whatever we can.
+ const size_t cur_pages = std::min(pg_pages, map_pages);
+ ASSERT(this->Operate(cur_address, cur_pages, info.GetPermission(),
+ OperationType::Map, pg_phys_addr) == ResultSuccess);
+
+ // Advance.
+ cur_address += cur_pages * PageSize;
+ map_pages -= cur_pages;
+
+ pg_phys_addr += cur_pages * PageSize;
+ pg_pages -= cur_pages;
+ }
+ }
+
+ // Check if we're done.
+ if (last_map_address <= info.GetLastAddress()) {
+ break;
+ }
+
+ // Advance.
+ ++it;
}
- mapped_size += GetSizeInRange(info, addr, end_addr);
- } else if (info.state != KMemoryState::Free) {
- result = ResultInvalidCurrentMemory;
}
});
- if (result.IsError()) {
- return result;
- }
+ // Iterate over the memory, unmapping as we go.
+ auto it = block_manager->FindIterator(cur_address);
+ while (true) {
+ // Check that the iterator is valid.
+ ASSERT(it != block_manager->end());
- if (!mapped_size) {
- return ResultSuccess;
- }
+ // Get the memory info.
+ const KMemoryInfo info = it->GetMemoryInfo();
- // Unmap each region within the range
- KPageLinkedList page_linked_list;
- block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) {
- if (info.state == KMemoryState::Normal) {
- const std::size_t block_size{GetSizeInRange(info, addr, end_addr)};
- const std::size_t block_num_pages{block_size / PageSize};
- const VAddr block_addr{GetAddressInRange(info, addr)};
-
- AddRegionToPages(block_addr, block_size / PageSize, page_linked_list);
-
- if (result = Operate(block_addr, block_num_pages, KMemoryPermission::None,
- OperationType::Unmap);
- result.IsError()) {
- return;
- }
+ // If the memory state is normal, we need to unmap it.
+ if (info.GetState() == KMemoryState::Normal) {
+ // Determine the range to unmap.
+ const size_t cur_pages = std::min(VAddr(info.GetEndAddress()) - cur_address,
+ last_address + 1 - cur_address) /
+ PageSize;
+
+ // Unmap.
+ R_TRY(Operate(cur_address, cur_pages, KMemoryPermission::None, OperationType::Unmap));
}
- });
- if (result.IsError()) {
- return result;
- }
- const std::size_t num_pages{size / PageSize};
- system.Kernel().MemoryManager().Free(page_linked_list, num_pages, memory_pool,
- allocation_option);
+ // Check if we're done.
+ if (last_address <= info.GetLastAddress()) {
+ break;
+ }
- block_manager->Update(addr, num_pages, KMemoryState::Free);
+ // Advance.
+ cur_address = info.GetEndAddress();
+ ++it;
+ }
+ // Release the memory resource.
+ mapped_physical_memory_size -= mapped_size;
auto process{system.Kernel().CurrentProcess()};
process->GetResourceLimit()->Release(LimitableResource::PhysicalMemory, mapped_size);
- mapped_physical_memory_size -= mapped_size;
+
+ // Update memory blocks.
+ block_manager->Update(address, size / PageSize, KMemoryState::Free, KMemoryPermission::None,
+ KMemoryAttribute::None);
+
+ // TODO(bunnei): This is a workaround until the next set of changes, where we add reference
+ // counting for mapped pages. Until then, we must manually close the reference to the page
+ // group.
+ system.Kernel().MemoryManager().Close(pg);
+
+ // We succeeded.
+ remap_guard.Cancel();
return ResultSuccess;
}
ResultCode KPageTable::MapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryState src_state{};
CASCADE_CODE(CheckMemoryState(
@@ -579,7 +1028,7 @@ ResultCode KPageTable::MapMemory(VAddr dst_addr, VAddr src_addr, std::size_t siz
}
ResultCode KPageTable::UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryState src_state{};
CASCADE_CODE(CheckMemoryState(
@@ -622,6 +1071,8 @@ ResultCode KPageTable::UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t s
ResultCode KPageTable::MapPages(VAddr addr, const KPageLinkedList& page_linked_list,
KMemoryPermission perm) {
+ ASSERT(this->IsLockedByCurrentThread());
+
VAddr cur_addr{addr};
for (const auto& node : page_linked_list.Nodes()) {
@@ -650,7 +1101,7 @@ ResultCode KPageTable::MapPages(VAddr address, KPageLinkedList& page_linked_list
R_UNLESS(this->CanContain(address, size, state), ResultInvalidCurrentMemory);
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Check the memory state.
R_TRY(this->CheckMemoryState(address, size, KMemoryState::All, KMemoryState::Free,
@@ -666,13 +1117,54 @@ ResultCode KPageTable::MapPages(VAddr address, KPageLinkedList& page_linked_list
return ResultSuccess;
}
+ResultCode KPageTable::MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment,
+ PAddr phys_addr, bool is_pa_valid, VAddr region_start,
+ std::size_t region_num_pages, KMemoryState state,
+ KMemoryPermission perm) {
+ ASSERT(Common::IsAligned(alignment, PageSize) && alignment >= PageSize);
+
+ // Ensure this is a valid map request.
+ R_UNLESS(this->CanContain(region_start, region_num_pages * PageSize, state),
+ ResultInvalidCurrentMemory);
+ R_UNLESS(num_pages < region_num_pages, ResultOutOfMemory);
+
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
+
+ // Find a random address to map at.
+ VAddr addr = this->FindFreeArea(region_start, region_num_pages, num_pages, alignment, 0,
+ this->GetNumGuardPages());
+ R_UNLESS(addr != 0, ResultOutOfMemory);
+ ASSERT(Common::IsAligned(addr, alignment));
+ ASSERT(this->CanContain(addr, num_pages * PageSize, state));
+ ASSERT(this->CheckMemoryState(addr, num_pages * PageSize, KMemoryState::All, KMemoryState::Free,
+ KMemoryPermission::None, KMemoryPermission::None,
+ KMemoryAttribute::None, KMemoryAttribute::None)
+ .IsSuccess());
+
+ // Perform mapping operation.
+ if (is_pa_valid) {
+ R_TRY(this->Operate(addr, num_pages, perm, OperationType::Map, phys_addr));
+ } else {
+ UNIMPLEMENTED();
+ }
+
+ // Update the blocks.
+ block_manager->Update(addr, num_pages, state, perm);
+
+ // We successfully mapped the pages.
+ *out_addr = addr;
+ return ResultSuccess;
+}
+
ResultCode KPageTable::UnmapPages(VAddr addr, const KPageLinkedList& page_linked_list) {
+ ASSERT(this->IsLockedByCurrentThread());
+
VAddr cur_addr{addr};
for (const auto& node : page_linked_list.Nodes()) {
- const std::size_t num_pages{(addr - cur_addr) / PageSize};
- if (const auto result{
- Operate(addr, num_pages, KMemoryPermission::None, OperationType::Unmap)};
+ if (const auto result{Operate(cur_addr, node.GetNumPages(), KMemoryPermission::None,
+ OperationType::Unmap)};
result.IsError()) {
return result;
}
@@ -691,7 +1183,7 @@ ResultCode KPageTable::UnmapPages(VAddr addr, KPageLinkedList& page_linked_list,
R_UNLESS(this->Contains(addr, size), ResultInvalidCurrentMemory);
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Check the memory state.
R_TRY(this->CheckMemoryState(addr, size, KMemoryState::All, state, KMemoryPermission::None,
@@ -707,12 +1199,36 @@ ResultCode KPageTable::UnmapPages(VAddr addr, KPageLinkedList& page_linked_list,
return ResultSuccess;
}
+ResultCode KPageTable::UnmapPages(VAddr address, std::size_t num_pages, KMemoryState state) {
+ // Check that the unmap is in range.
+ const std::size_t size = num_pages * PageSize;
+ R_UNLESS(this->Contains(address, size), ResultInvalidCurrentMemory);
+
+ // Lock the table.
+ KScopedLightLock lk(general_lock);
+
+ // Check the memory state.
+ std::size_t num_allocator_blocks{};
+ R_TRY(this->CheckMemoryState(std::addressof(num_allocator_blocks), address, size,
+ KMemoryState::All, state, KMemoryPermission::None,
+ KMemoryPermission::None, KMemoryAttribute::All,
+ KMemoryAttribute::None));
+
+ // Perform the unmap.
+ R_TRY(Operate(address, num_pages, KMemoryPermission::None, OperationType::Unmap));
+
+ // Update the blocks.
+ block_manager->Update(address, num_pages, KMemoryState::Free, KMemoryPermission::None);
+
+ return ResultSuccess;
+}
+
ResultCode KPageTable::SetProcessMemoryPermission(VAddr addr, std::size_t size,
Svc::MemoryPermission svc_perm) {
const size_t num_pages = size / PageSize;
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Verify we can change the memory permission.
KMemoryState old_state;
@@ -766,7 +1282,7 @@ ResultCode KPageTable::SetProcessMemoryPermission(VAddr addr, std::size_t size,
}
KMemoryInfo KPageTable::QueryInfoImpl(VAddr addr) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
return block_manager->FindBlock(addr).GetMemoryInfo();
}
@@ -781,7 +1297,7 @@ KMemoryInfo KPageTable::QueryInfo(VAddr addr) {
}
ResultCode KPageTable::ReserveTransferMemory(VAddr addr, std::size_t size, KMemoryPermission perm) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryState state{};
KMemoryAttribute attribute{};
@@ -799,7 +1315,7 @@ ResultCode KPageTable::ReserveTransferMemory(VAddr addr, std::size_t size, KMemo
}
ResultCode KPageTable::ResetTransferMemory(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryState state{};
@@ -818,7 +1334,7 @@ ResultCode KPageTable::SetMemoryPermission(VAddr addr, std::size_t size,
const size_t num_pages = size / PageSize;
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Verify we can change the memory permission.
KMemoryState old_state;
@@ -847,7 +1363,7 @@ ResultCode KPageTable::SetMemoryAttribute(VAddr addr, std::size_t size, u32 mask
KMemoryAttribute::SetMask);
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Verify we can change the memory attribute.
KMemoryState old_state;
@@ -878,7 +1394,7 @@ ResultCode KPageTable::SetMemoryAttribute(VAddr addr, std::size_t size, u32 mask
ResultCode KPageTable::SetMaxHeapSize(std::size_t size) {
// Lock the table.
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
// Only process page tables are allowed to set heap size.
ASSERT(!this->IsKernel());
@@ -889,15 +1405,15 @@ ResultCode KPageTable::SetMaxHeapSize(std::size_t size) {
}
ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) {
- // Lock the physical memory lock.
- std::lock_guard phys_lk(map_physical_memory_lock);
+ // Lock the physical memory mutex.
+ KScopedLightLock map_phys_mem_lk(map_physical_memory_lock);
// Try to perform a reduction in heap, instead of an extension.
VAddr cur_address{};
std::size_t allocation_size{};
{
// Lock the table.
- std::lock_guard lk(page_table_lock);
+ KScopedLightLock lk(general_lock);
// Validate that setting heap size is possible at all.
R_UNLESS(!is_kernel, ResultOutOfMemory);
@@ -955,14 +1471,21 @@ ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) {
R_UNLESS(memory_reservation.Succeeded(), ResultLimitReached);
// Allocate pages for the heap extension.
- KPageLinkedList page_linked_list;
- R_TRY(system.Kernel().MemoryManager().Allocate(page_linked_list, allocation_size / PageSize,
- memory_pool, allocation_option));
+ KPageLinkedList pg;
+ R_TRY(system.Kernel().MemoryManager().AllocateAndOpen(
+ &pg, allocation_size / PageSize,
+ KMemoryManager::EncodeOption(memory_pool, allocation_option)));
+
+ // Clear all the newly allocated pages.
+ for (const auto& it : pg.Nodes()) {
+ std::memset(system.DeviceMemory().GetPointer(it.GetAddress()), heap_fill_value,
+ it.GetSize());
+ }
// Map the pages.
{
// Lock the table.
- std::lock_guard lk(page_table_lock);
+ KScopedLightLock lk(general_lock);
// Ensure that the heap hasn't changed since we began executing.
ASSERT(cur_address == current_heap_end);
@@ -976,7 +1499,7 @@ ResultCode KPageTable::SetHeapSize(VAddr* out, std::size_t size) {
// Map the pages.
const auto num_pages = allocation_size / PageSize;
- R_TRY(Operate(current_heap_end, num_pages, page_linked_list, OperationType::MapGroup));
+ R_TRY(Operate(current_heap_end, num_pages, pg, OperationType::MapGroup));
// Clear all the newly allocated pages.
for (std::size_t cur_page = 0; cur_page < num_pages; ++cur_page) {
@@ -1004,7 +1527,7 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages,
bool is_map_only, VAddr region_start,
std::size_t region_num_pages, KMemoryState state,
KMemoryPermission perm, PAddr map_addr) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
if (!CanContain(region_start, region_num_pages * PageSize, state)) {
return ResultInvalidCurrentMemory;
@@ -1024,8 +1547,9 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages,
R_TRY(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr));
} else {
KPageLinkedList page_group;
- R_TRY(system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, memory_pool,
- allocation_option));
+ R_TRY(system.Kernel().MemoryManager().AllocateAndOpenForProcess(
+ &page_group, needed_num_pages,
+ KMemoryManager::EncodeOption(memory_pool, allocation_option), 0, 0));
R_TRY(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup));
}
@@ -1035,7 +1559,7 @@ ResultVal<VAddr> KPageTable::AllocateAndMapMemory(std::size_t needed_num_pages,
}
ResultCode KPageTable::LockForDeviceAddressSpace(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryPermission perm{};
if (const ResultCode result{CheckMemoryState(
@@ -1058,7 +1582,7 @@ ResultCode KPageTable::LockForDeviceAddressSpace(VAddr addr, std::size_t size) {
}
ResultCode KPageTable::UnlockForDeviceAddressSpace(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryPermission perm{};
if (const ResultCode result{CheckMemoryState(
@@ -1081,7 +1605,7 @@ ResultCode KPageTable::UnlockForDeviceAddressSpace(VAddr addr, std::size_t size)
}
ResultCode KPageTable::LockForCodeMemory(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryPermission new_perm = KMemoryPermission::NotMapped | KMemoryPermission::KernelReadWrite;
@@ -1108,7 +1632,7 @@ ResultCode KPageTable::LockForCodeMemory(VAddr addr, std::size_t size) {
}
ResultCode KPageTable::UnlockForCodeMemory(VAddr addr, std::size_t size) {
- std::lock_guard lock{page_table_lock};
+ KScopedLightLock lk(general_lock);
KMemoryPermission new_perm = KMemoryPermission::UserReadWrite;
@@ -1232,7 +1756,7 @@ ResultCode KPageTable::Operate(VAddr addr, std::size_t num_pages, KMemoryPermiss
return ResultSuccess;
}
-constexpr VAddr KPageTable::GetRegionAddress(KMemoryState state) const {
+VAddr KPageTable::GetRegionAddress(KMemoryState state) const {
switch (state) {
case KMemoryState::Free:
case KMemoryState::Kernel:
@@ -1268,7 +1792,7 @@ constexpr VAddr KPageTable::GetRegionAddress(KMemoryState state) const {
}
}
-constexpr std::size_t KPageTable::GetRegionSize(KMemoryState state) const {
+std::size_t KPageTable::GetRegionSize(KMemoryState state) const {
switch (state) {
case KMemoryState::Free:
case KMemoryState::Kernel:
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h
index 60ae9b9e8..54c6adf8d 100644
--- a/src/core/hle/kernel/k_page_table.h
+++ b/src/core/hle/kernel/k_page_table.h
@@ -5,11 +5,12 @@
#pragma once
#include <memory>
-#include <mutex>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "common/page_table.h"
#include "core/file_sys/program_metadata.h"
+#include "core/hle/kernel/k_light_lock.h"
#include "core/hle/kernel/k_memory_block.h"
#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/result.h"
@@ -22,17 +23,21 @@ namespace Kernel {
class KMemoryBlockManager;
-class KPageTable final : NonCopyable {
+class KPageTable final {
public:
+ YUZU_NON_COPYABLE(KPageTable);
+ YUZU_NON_MOVEABLE(KPageTable);
+
explicit KPageTable(Core::System& system_);
+ ~KPageTable();
ResultCode InitializeForProcess(FileSys::ProgramAddressSpaceType as_type, bool enable_aslr,
VAddr code_addr, std::size_t code_size,
KMemoryManager::Pool pool);
ResultCode MapProcessCode(VAddr addr, std::size_t pages_count, KMemoryState state,
KMemoryPermission perm);
- ResultCode MapCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size);
- ResultCode UnmapCodeMemory(VAddr dst_addr, VAddr src_addr, std::size_t size);
+ ResultCode MapCodeMemory(VAddr dst_address, VAddr src_address, std::size_t size);
+ ResultCode UnmapCodeMemory(VAddr dst_address, VAddr src_address, std::size_t size);
ResultCode UnmapProcessMemory(VAddr dst_addr, std::size_t size, KPageTable& src_page_table,
VAddr src_addr);
ResultCode MapPhysicalMemory(VAddr addr, std::size_t size);
@@ -41,7 +46,14 @@ public:
ResultCode UnmapMemory(VAddr dst_addr, VAddr src_addr, std::size_t size);
ResultCode MapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state,
KMemoryPermission perm);
+ ResultCode MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment,
+ PAddr phys_addr, KMemoryState state, KMemoryPermission perm) {
+ return this->MapPages(out_addr, num_pages, alignment, phys_addr, true,
+ this->GetRegionAddress(state), this->GetRegionSize(state) / PageSize,
+ state, perm);
+ }
ResultCode UnmapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state);
+ ResultCode UnmapPages(VAddr address, std::size_t num_pages, KMemoryState state);
ResultCode SetProcessMemoryPermission(VAddr addr, std::size_t size,
Svc::MemoryPermission svc_perm);
KMemoryInfo QueryInfo(VAddr addr);
@@ -86,6 +98,9 @@ private:
ResultCode InitializeMemoryLayout(VAddr start, VAddr end);
ResultCode MapPages(VAddr addr, const KPageLinkedList& page_linked_list,
KMemoryPermission perm);
+ ResultCode MapPages(VAddr* out_addr, std::size_t num_pages, std::size_t alignment,
+ PAddr phys_addr, bool is_pa_valid, VAddr region_start,
+ std::size_t region_num_pages, KMemoryState state, KMemoryPermission perm);
ResultCode UnmapPages(VAddr addr, const KPageLinkedList& page_linked_list);
bool IsRegionMapped(VAddr address, u64 size);
bool IsRegionContiguous(VAddr addr, u64 size) const;
@@ -97,8 +112,11 @@ private:
OperationType operation);
ResultCode Operate(VAddr addr, std::size_t num_pages, KMemoryPermission perm,
OperationType operation, PAddr map_addr = 0);
- constexpr VAddr GetRegionAddress(KMemoryState state) const;
- constexpr std::size_t GetRegionSize(KMemoryState state) const;
+ VAddr GetRegionAddress(KMemoryState state) const;
+ std::size_t GetRegionSize(KMemoryState state) const;
+
+ VAddr FindFreeArea(VAddr region_start, std::size_t region_num_pages, std::size_t num_pages,
+ std::size_t alignment, std::size_t offset, std::size_t guard_pages);
ResultCode CheckMemoryStateContiguous(std::size_t* out_blocks_needed, VAddr addr,
std::size_t size, KMemoryState state_mask,
@@ -132,7 +150,7 @@ private:
return CheckMemoryState(nullptr, nullptr, nullptr, out_blocks_needed, addr, size,
state_mask, state, perm_mask, perm, attr_mask, attr, ignore_attr);
}
- ResultCode CheckMemoryState(VAddr addr, size_t size, KMemoryState state_mask,
+ ResultCode CheckMemoryState(VAddr addr, std::size_t size, KMemoryState state_mask,
KMemoryState state, KMemoryPermission perm_mask,
KMemoryPermission perm, KMemoryAttribute attr_mask,
KMemoryAttribute attr,
@@ -142,11 +160,12 @@ private:
}
bool IsLockedByCurrentThread() const {
- return true;
+ return general_lock.IsLockedByCurrentThread();
}
- std::recursive_mutex page_table_lock;
- std::mutex map_physical_memory_lock;
+ mutable KLightLock general_lock;
+ mutable KLightLock map_physical_memory_lock;
+
std::unique_ptr<KMemoryBlockManager> block_manager;
public:
@@ -204,8 +223,8 @@ public:
constexpr VAddr GetAliasCodeRegionSize() const {
return alias_code_region_end - alias_code_region_start;
}
- size_t GetNormalMemorySize() {
- std::lock_guard lk(page_table_lock);
+ std::size_t GetNormalMemorySize() {
+ KScopedLightLock lk(general_lock);
return GetHeapSize() + mapped_physical_memory_size;
}
constexpr std::size_t GetAddressSpaceWidth() const {
@@ -247,7 +266,10 @@ public:
constexpr bool IsInsideASLRRegion(VAddr address, std::size_t size) const {
return !IsOutsideASLRRegion(address, size);
}
- constexpr PAddr GetPhysicalAddr(VAddr addr) {
+ constexpr std::size_t GetNumGuardPages() const {
+ return IsKernel() ? 1 : 4;
+ }
+ PAddr GetPhysicalAddr(VAddr addr) const {
const auto backing_addr = page_table_impl.backing_addr[addr >> PageBits];
ASSERT(backing_addr);
return backing_addr + addr;
@@ -268,10 +290,6 @@ private:
return is_aslr_enabled;
}
- constexpr std::size_t GetNumGuardPages() const {
- return IsKernel() ? 1 : 4;
- }
-
constexpr bool ContainsPages(VAddr addr, std::size_t num_pages) const {
return (address_space_start <= addr) &&
(num_pages <= (address_space_end - address_space_start) / PageSize) &&
@@ -303,6 +321,8 @@ private:
bool is_kernel{};
bool is_aslr_enabled{};
+ u32 heap_fill_value{};
+
KMemoryManager::Pool memory_pool{KMemoryManager::Pool::Application};
KMemoryManager::Direction allocation_option{KMemoryManager::Direction::FromFront};
diff --git a/src/core/hle/kernel/k_port.cpp b/src/core/hle/kernel/k_port.cpp
index a8ba09c4a..ceb98709f 100644
--- a/src/core/hle/kernel/k_port.cpp
+++ b/src/core/hle/kernel/k_port.cpp
@@ -57,7 +57,12 @@ ResultCode KPort::EnqueueSession(KServerSession* session) {
R_UNLESS(state == State::Normal, ResultPortClosed);
server.EnqueueSession(session);
- server.GetSessionRequestHandler()->ClientConnected(server.AcceptSession());
+
+ if (auto session_ptr = server.GetSessionRequestHandler().lock()) {
+ session_ptr->ClientConnected(server.AcceptSession());
+ } else {
+ UNREACHABLE();
+ }
return ResultSuccess;
}
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp
index 85c506979..b39405496 100644
--- a/src/core/hle/kernel/k_process.cpp
+++ b/src/core/hle/kernel/k_process.cpp
@@ -70,65 +70,12 @@ void SetupMainThread(Core::System& system, KProcess& owner_process, u32 priority
}
} // Anonymous namespace
-// Represents a page used for thread-local storage.
-//
-// Each TLS page contains slots that may be used by processes and threads.
-// Every process and thread is created with a slot in some arbitrary page
-// (whichever page happens to have an available slot).
-class TLSPage {
-public:
- static constexpr std::size_t num_slot_entries =
- Core::Memory::PAGE_SIZE / Core::Memory::TLS_ENTRY_SIZE;
-
- explicit TLSPage(VAddr address) : base_address{address} {}
-
- bool HasAvailableSlots() const {
- return !is_slot_used.all();
- }
-
- VAddr GetBaseAddress() const {
- return base_address;
- }
-
- std::optional<VAddr> ReserveSlot() {
- for (std::size_t i = 0; i < is_slot_used.size(); i++) {
- if (is_slot_used[i]) {
- continue;
- }
-
- is_slot_used[i] = true;
- return base_address + (i * Core::Memory::TLS_ENTRY_SIZE);
- }
-
- return std::nullopt;
- }
-
- void ReleaseSlot(VAddr address) {
- // Ensure that all given addresses are consistent with how TLS pages
- // are intended to be used when releasing slots.
- ASSERT(IsWithinPage(address));
- ASSERT((address % Core::Memory::TLS_ENTRY_SIZE) == 0);
-
- const std::size_t index = (address - base_address) / Core::Memory::TLS_ENTRY_SIZE;
- is_slot_used[index] = false;
- }
-
-private:
- bool IsWithinPage(VAddr address) const {
- return base_address <= address && address < base_address + Core::Memory::PAGE_SIZE;
- }
-
- VAddr base_address;
- std::bitset<num_slot_entries> is_slot_used;
-};
-
ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::string process_name,
- ProcessType type) {
+ ProcessType type, KResourceLimit* res_limit) {
auto& kernel = system.Kernel();
process->name = std::move(process_name);
-
- process->resource_limit = kernel.GetSystemResourceLimit();
+ process->resource_limit = res_limit;
process->status = ProcessStatus::Created;
process->program_id = 0;
process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID()
@@ -143,9 +90,6 @@ ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::st
kernel.AppendNewProcess(process);
- // Open a reference to the resource limit.
- process->resource_limit->Open();
-
// Clear remaining fields.
process->num_running_threads = 0;
process->is_signaled = false;
@@ -153,6 +97,9 @@ ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::st
process->is_suspended = false;
process->schedule_count = 0;
+ // Open a reference to the resource limit.
+ process->resource_limit->Open();
+
return ResultSuccess;
}
@@ -405,7 +352,7 @@ ResultCode KProcess::LoadFromMetadata(const FileSys::ProgramMetadata& metadata,
}
// Create TLS region
- tls_region_address = CreateTLSRegion();
+ R_TRY(this->CreateThreadLocalRegion(std::addressof(tls_region_address)));
memory_reservation.Commit();
return handle_table.Initialize(capabilities.GetHandleTableSize());
@@ -445,7 +392,7 @@ void KProcess::PrepareForTermination() {
stop_threads(kernel.System().GlobalSchedulerContext().GetThreadList());
- FreeTLSRegion(tls_region_address);
+ this->DeleteThreadLocalRegion(tls_region_address);
tls_region_address = 0;
if (resource_limit) {
@@ -457,9 +404,6 @@ void KProcess::PrepareForTermination() {
}
void KProcess::Finalize() {
- // Finalize the handle table and close any open handles.
- handle_table.Finalize();
-
// Free all shared memory infos.
{
auto it = shared_memory_list.begin();
@@ -484,67 +428,110 @@ void KProcess::Finalize() {
resource_limit = nullptr;
}
+ // Finalize the page table.
+ page_table.reset();
+
// Perform inherited finalization.
KAutoObjectWithSlabHeapAndContainer<KProcess, KWorkerTask>::Finalize();
}
-/**
- * Attempts to find a TLS page that contains a free slot for
- * use by a thread.
- *
- * @returns If a page with an available slot is found, then an iterator
- * pointing to the page is returned. Otherwise the end iterator
- * is returned instead.
- */
-static auto FindTLSPageWithAvailableSlots(std::vector<TLSPage>& tls_pages) {
- return std::find_if(tls_pages.begin(), tls_pages.end(),
- [](const auto& page) { return page.HasAvailableSlots(); });
-}
+ResultCode KProcess::CreateThreadLocalRegion(VAddr* out) {
+ KThreadLocalPage* tlp = nullptr;
+ VAddr tlr = 0;
-VAddr KProcess::CreateTLSRegion() {
- KScopedSchedulerLock lock(kernel);
- if (auto tls_page_iter{FindTLSPageWithAvailableSlots(tls_pages)};
- tls_page_iter != tls_pages.cend()) {
- return *tls_page_iter->ReserveSlot();
- }
+ // See if we can get a region from a partially used TLP.
+ {
+ KScopedSchedulerLock sl{kernel};
- Page* const tls_page_ptr{kernel.GetUserSlabHeapPages().Allocate()};
- ASSERT(tls_page_ptr);
+ if (auto it = partially_used_tlp_tree.begin(); it != partially_used_tlp_tree.end()) {
+ tlr = it->Reserve();
+ ASSERT(tlr != 0);
- const VAddr start{page_table->GetKernelMapRegionStart()};
- const VAddr size{page_table->GetKernelMapRegionEnd() - start};
- const PAddr tls_map_addr{kernel.System().DeviceMemory().GetPhysicalAddr(tls_page_ptr)};
- const VAddr tls_page_addr{page_table
- ->AllocateAndMapMemory(1, PageSize, true, start, size / PageSize,
- KMemoryState::ThreadLocal,
- KMemoryPermission::UserReadWrite,
- tls_map_addr)
- .ValueOr(0)};
+ if (it->IsAllUsed()) {
+ tlp = std::addressof(*it);
+ partially_used_tlp_tree.erase(it);
+ fully_used_tlp_tree.insert(*tlp);
+ }
+
+ *out = tlr;
+ return ResultSuccess;
+ }
+ }
- ASSERT(tls_page_addr);
+ // Allocate a new page.
+ tlp = KThreadLocalPage::Allocate(kernel);
+ R_UNLESS(tlp != nullptr, ResultOutOfMemory);
+ auto tlp_guard = SCOPE_GUARD({ KThreadLocalPage::Free(kernel, tlp); });
- std::memset(tls_page_ptr, 0, PageSize);
- tls_pages.emplace_back(tls_page_addr);
+ // Initialize the new page.
+ R_TRY(tlp->Initialize(kernel, this));
- const auto reserve_result{tls_pages.back().ReserveSlot()};
- ASSERT(reserve_result.has_value());
+ // Reserve a TLR.
+ tlr = tlp->Reserve();
+ ASSERT(tlr != 0);
- return *reserve_result;
+ // Insert into our tree.
+ {
+ KScopedSchedulerLock sl{kernel};
+ if (tlp->IsAllUsed()) {
+ fully_used_tlp_tree.insert(*tlp);
+ } else {
+ partially_used_tlp_tree.insert(*tlp);
+ }
+ }
+
+ // We succeeded!
+ tlp_guard.Cancel();
+ *out = tlr;
+ return ResultSuccess;
}
-void KProcess::FreeTLSRegion(VAddr tls_address) {
- KScopedSchedulerLock lock(kernel);
- const VAddr aligned_address = Common::AlignDown(tls_address, Core::Memory::PAGE_SIZE);
- auto iter =
- std::find_if(tls_pages.begin(), tls_pages.end(), [aligned_address](const auto& page) {
- return page.GetBaseAddress() == aligned_address;
- });
+ResultCode KProcess::DeleteThreadLocalRegion(VAddr addr) {
+ KThreadLocalPage* page_to_free = nullptr;
+
+ // Release the region.
+ {
+ KScopedSchedulerLock sl{kernel};
+
+ // Try to find the page in the partially used list.
+ auto it = partially_used_tlp_tree.find_key(Common::AlignDown(addr, PageSize));
+ if (it == partially_used_tlp_tree.end()) {
+ // If we don't find it, it has to be in the fully used list.
+ it = fully_used_tlp_tree.find_key(Common::AlignDown(addr, PageSize));
+ R_UNLESS(it != fully_used_tlp_tree.end(), ResultInvalidAddress);
+
+ // Release the region.
+ it->Release(addr);
+
+ // Move the page out of the fully used list.
+ KThreadLocalPage* tlp = std::addressof(*it);
+ fully_used_tlp_tree.erase(it);
+ if (tlp->IsAllFree()) {
+ page_to_free = tlp;
+ } else {
+ partially_used_tlp_tree.insert(*tlp);
+ }
+ } else {
+ // Release the region.
+ it->Release(addr);
+
+ // Handle the all-free case.
+ KThreadLocalPage* tlp = std::addressof(*it);
+ if (tlp->IsAllFree()) {
+ partially_used_tlp_tree.erase(it);
+ page_to_free = tlp;
+ }
+ }
+ }
+
+ // If we should free the page it was in, do so.
+ if (page_to_free != nullptr) {
+ page_to_free->Finalize();
- // Something has gone very wrong if we're freeing a region
- // with no actual page available.
- ASSERT(iter != tls_pages.cend());
+ KThreadLocalPage::Free(kernel, page_to_free);
+ }
- iter->ReleaseSlot(tls_address);
+ return ResultSuccess;
}
void KProcess::LoadModule(CodeSet code_set, VAddr base_addr) {
diff --git a/src/core/hle/kernel/k_process.h b/src/core/hle/kernel/k_process.h
index 38b446350..5ed0f2d83 100644
--- a/src/core/hle/kernel/k_process.h
+++ b/src/core/hle/kernel/k_process.h
@@ -15,6 +15,7 @@
#include "core/hle/kernel/k_condition_variable.h"
#include "core/hle/kernel/k_handle_table.h"
#include "core/hle/kernel/k_synchronization_object.h"
+#include "core/hle/kernel/k_thread_local_page.h"
#include "core/hle/kernel/k_worker_task.h"
#include "core/hle/kernel/process_capability.h"
#include "core/hle/kernel/slab_helpers.h"
@@ -91,7 +92,7 @@ public:
static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4;
static ResultCode Initialize(KProcess* process, Core::System& system, std::string process_name,
- ProcessType type);
+ ProcessType type, KResourceLimit* res_limit);
/// Gets a reference to the process' page table.
KPageTable& PageTable() {
@@ -362,10 +363,10 @@ public:
// Thread-local storage management
// Marks the next available region as used and returns the address of the slot.
- [[nodiscard]] VAddr CreateTLSRegion();
+ [[nodiscard]] ResultCode CreateThreadLocalRegion(VAddr* out);
// Frees a used TLS slot identified by the given address
- void FreeTLSRegion(VAddr tls_address);
+ ResultCode DeleteThreadLocalRegion(VAddr addr);
private:
void PinThread(s32 core_id, KThread* thread) {
@@ -413,13 +414,6 @@ private:
/// The ideal CPU core for this process, threads are scheduled on this core by default.
u8 ideal_core = 0;
- /// The Thread Local Storage area is allocated as processes create threads,
- /// each TLS area is 0x200 bytes, so one page (0x1000) is split up in 8 parts, and each part
- /// holds the TLS for a specific thread. This vector contains which parts are in use for each
- /// page as a bitmask.
- /// This vector will grow as more pages are allocated for new threads.
- std::vector<TLSPage> tls_pages;
-
/// Contains the parsed process capability descriptors.
ProcessCapabilities capabilities;
@@ -482,6 +476,12 @@ private:
KThread* exception_thread{};
KLightLock state_lock;
+
+ using TLPTree =
+ Common::IntrusiveRedBlackTreeBaseTraits<KThreadLocalPage>::TreeType<KThreadLocalPage>;
+ using TLPIterator = TLPTree::iterator;
+ TLPTree fully_used_tlp_tree;
+ TLPTree partially_used_tlp_tree;
};
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_resource_limit.cpp b/src/core/hle/kernel/k_resource_limit.cpp
index 0c4bba66b..a84977c68 100644
--- a/src/core/hle/kernel/k_resource_limit.cpp
+++ b/src/core/hle/kernel/k_resource_limit.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "common/assert.h"
+#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_resource_limit.h"
#include "core/hle/kernel/svc_results.h"
@@ -151,4 +152,22 @@ void KResourceLimit::Release(LimitableResource which, s64 value, s64 hint) {
}
}
+KResourceLimit* CreateResourceLimitForProcess(Core::System& system, s64 physical_memory_size) {
+ auto* resource_limit = KResourceLimit::Create(system.Kernel());
+ resource_limit->Initialize(&system.CoreTiming());
+
+ // Initialize default resource limit values.
+ // TODO(bunnei): These values are the system defaults, the limits for service processes are
+ // lower. These should use the correct limit values.
+
+ ASSERT(resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, physical_memory_size)
+ .IsSuccess());
+ ASSERT(resource_limit->SetLimitValue(LimitableResource::Threads, 800).IsSuccess());
+ ASSERT(resource_limit->SetLimitValue(LimitableResource::Events, 900).IsSuccess());
+ ASSERT(resource_limit->SetLimitValue(LimitableResource::TransferMemory, 200).IsSuccess());
+ ASSERT(resource_limit->SetLimitValue(LimitableResource::Sessions, 1133).IsSuccess());
+
+ return resource_limit;
+}
+
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_resource_limit.h b/src/core/hle/kernel/k_resource_limit.h
index fab6005ff..d23d16aa4 100644
--- a/src/core/hle/kernel/k_resource_limit.h
+++ b/src/core/hle/kernel/k_resource_limit.h
@@ -67,4 +67,7 @@ private:
KLightConditionVariable cond_var;
const Core::Timing::CoreTiming* core_timing{};
};
+
+KResourceLimit* CreateResourceLimitForProcess(Core::System& system, s64 physical_memory_size);
+
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_server_port.h b/src/core/hle/kernel/k_server_port.h
index 6302d5e61..2185736be 100644
--- a/src/core/hle/kernel/k_server_port.h
+++ b/src/core/hle/kernel/k_server_port.h
@@ -30,11 +30,11 @@ public:
/// Whether or not this server port has an HLE handler available.
bool HasSessionRequestHandler() const {
- return session_handler != nullptr;
+ return !session_handler.expired();
}
/// Gets the HLE handler for this port.
- SessionRequestHandlerPtr GetSessionRequestHandler() const {
+ SessionRequestHandlerWeakPtr GetSessionRequestHandler() const {
return session_handler;
}
@@ -42,7 +42,7 @@ public:
* Sets the HLE handler template for the port. ServerSessions crated by connecting to this port
* will inherit a reference to this handler.
*/
- void SetSessionHandler(SessionRequestHandlerPtr&& handler) {
+ void SetSessionHandler(SessionRequestHandlerWeakPtr&& handler) {
session_handler = std::move(handler);
}
@@ -66,7 +66,7 @@ private:
void CleanupSessions();
SessionList session_list;
- SessionRequestHandlerPtr session_handler;
+ SessionRequestHandlerWeakPtr session_handler;
KPort* parent{};
};
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 4d94eb9cf..30c56ff29 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -27,10 +27,7 @@ namespace Kernel {
KServerSession::KServerSession(KernelCore& kernel_) : KSynchronizationObject{kernel_} {}
-KServerSession::~KServerSession() {
- // Ensure that the global list tracking server sessions does not hold on to a reference.
- kernel.UnregisterServerSession(this);
-}
+KServerSession::~KServerSession() = default;
void KServerSession::Initialize(KSession* parent_session_, std::string&& name_,
std::shared_ptr<SessionRequestManager> manager_) {
@@ -49,6 +46,9 @@ void KServerSession::Destroy() {
parent->OnServerClosed();
parent->Close();
+
+ // Release host emulation members.
+ manager.reset();
}
void KServerSession::OnClientClosed() {
@@ -98,7 +98,12 @@ ResultCode KServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& co
UNREACHABLE();
return ResultSuccess; // Ignore error if asserts are off
}
- return manager->DomainHandler(object_id - 1)->HandleSyncRequest(*this, context);
+ if (auto strong_ptr = manager->DomainHandler(object_id - 1).lock()) {
+ return strong_ptr->HandleSyncRequest(*this, context);
+ } else {
+ UNREACHABLE();
+ return ResultSuccess;
+ }
case IPC::DomainMessageHeader::CommandType::CloseVirtualHandle: {
LOG_DEBUG(IPC, "CloseVirtualHandle, object_id=0x{:08X}", object_id);
diff --git a/src/core/hle/kernel/k_slab_heap.h b/src/core/hle/kernel/k_slab_heap.h
index 0ad74b0a0..5690cc757 100644
--- a/src/core/hle/kernel/k_slab_heap.h
+++ b/src/core/hle/kernel/k_slab_heap.h
@@ -7,6 +7,7 @@
#include <atomic>
#include "common/assert.h"
+#include "common/common_funcs.h"
#include "common/common_types.h"
namespace Kernel {
@@ -15,35 +16,34 @@ class KernelCore;
namespace impl {
-class KSlabHeapImpl final : NonCopyable {
+class KSlabHeapImpl {
+ YUZU_NON_COPYABLE(KSlabHeapImpl);
+ YUZU_NON_MOVEABLE(KSlabHeapImpl);
+
public:
struct Node {
Node* next{};
};
+public:
constexpr KSlabHeapImpl() = default;
- void Initialize(std::size_t size) {
- ASSERT(head == nullptr);
- obj_size = size;
- }
-
- constexpr std::size_t GetObjectSize() const {
- return obj_size;
+ void Initialize() {
+ ASSERT(m_head == nullptr);
}
Node* GetHead() const {
- return head;
+ return m_head;
}
void* Allocate() {
- Node* ret = head.load();
+ Node* ret = m_head.load();
do {
if (ret == nullptr) {
break;
}
- } while (!head.compare_exchange_weak(ret, ret->next));
+ } while (!m_head.compare_exchange_weak(ret, ret->next));
return ret;
}
@@ -51,166 +51,157 @@ public:
void Free(void* obj) {
Node* node = static_cast<Node*>(obj);
- Node* cur_head = head.load();
+ Node* cur_head = m_head.load();
do {
node->next = cur_head;
- } while (!head.compare_exchange_weak(cur_head, node));
+ } while (!m_head.compare_exchange_weak(cur_head, node));
}
private:
- std::atomic<Node*> head{};
- std::size_t obj_size{};
+ std::atomic<Node*> m_head{};
};
} // namespace impl
-class KSlabHeapBase : NonCopyable {
+template <bool SupportDynamicExpansion>
+class KSlabHeapBase : protected impl::KSlabHeapImpl {
+ YUZU_NON_COPYABLE(KSlabHeapBase);
+ YUZU_NON_MOVEABLE(KSlabHeapBase);
+
+private:
+ size_t m_obj_size{};
+ uintptr_t m_peak{};
+ uintptr_t m_start{};
+ uintptr_t m_end{};
+
+private:
+ void UpdatePeakImpl(uintptr_t obj) {
+ static_assert(std::atomic_ref<uintptr_t>::is_always_lock_free);
+ std::atomic_ref<uintptr_t> peak_ref(m_peak);
+
+ const uintptr_t alloc_peak = obj + this->GetObjectSize();
+ uintptr_t cur_peak = m_peak;
+ do {
+ if (alloc_peak <= cur_peak) {
+ break;
+ }
+ } while (!peak_ref.compare_exchange_strong(cur_peak, alloc_peak));
+ }
+
public:
constexpr KSlabHeapBase() = default;
- constexpr bool Contains(uintptr_t addr) const {
- return start <= addr && addr < end;
+ bool Contains(uintptr_t address) const {
+ return m_start <= address && address < m_end;
}
- constexpr std::size_t GetSlabHeapSize() const {
- return (end - start) / GetObjectSize();
- }
+ void Initialize(size_t obj_size, void* memory, size_t memory_size) {
+ // Ensure we don't initialize a slab using null memory.
+ ASSERT(memory != nullptr);
- constexpr std::size_t GetObjectSize() const {
- return impl.GetObjectSize();
- }
+ // Set our object size.
+ m_obj_size = obj_size;
- constexpr uintptr_t GetSlabHeapAddress() const {
- return start;
- }
+ // Initialize the base allocator.
+ KSlabHeapImpl::Initialize();
+
+ // Set our tracking variables.
+ const size_t num_obj = (memory_size / obj_size);
+ m_start = reinterpret_cast<uintptr_t>(memory);
+ m_end = m_start + num_obj * obj_size;
+ m_peak = m_start;
- std::size_t GetObjectIndexImpl(const void* obj) const {
- return (reinterpret_cast<uintptr_t>(obj) - start) / GetObjectSize();
+ // Free the objects.
+ u8* cur = reinterpret_cast<u8*>(m_end);
+
+ for (size_t i = 0; i < num_obj; i++) {
+ cur -= obj_size;
+ KSlabHeapImpl::Free(cur);
+ }
}
- std::size_t GetPeakIndex() const {
- return GetObjectIndexImpl(reinterpret_cast<const void*>(peak));
+ size_t GetSlabHeapSize() const {
+ return (m_end - m_start) / this->GetObjectSize();
}
- void* AllocateImpl() {
- return impl.Allocate();
+ size_t GetObjectSize() const {
+ return m_obj_size;
}
- void FreeImpl(void* obj) {
- // Don't allow freeing an object that wasn't allocated from this heap
- ASSERT(Contains(reinterpret_cast<uintptr_t>(obj)));
+ void* Allocate() {
+ void* obj = KSlabHeapImpl::Allocate();
- impl.Free(obj);
+ return obj;
}
- void InitializeImpl(std::size_t obj_size, void* memory, std::size_t memory_size) {
- // Ensure we don't initialize a slab using null memory
- ASSERT(memory != nullptr);
-
- // Initialize the base allocator
- impl.Initialize(obj_size);
+ void Free(void* obj) {
+ // Don't allow freeing an object that wasn't allocated from this heap.
+ const bool contained = this->Contains(reinterpret_cast<uintptr_t>(obj));
+ ASSERT(contained);
+ KSlabHeapImpl::Free(obj);
+ }
- // Set our tracking variables
- const std::size_t num_obj = (memory_size / obj_size);
- start = reinterpret_cast<uintptr_t>(memory);
- end = start + num_obj * obj_size;
- peak = start;
+ size_t GetObjectIndex(const void* obj) const {
+ if constexpr (SupportDynamicExpansion) {
+ if (!this->Contains(reinterpret_cast<uintptr_t>(obj))) {
+ return std::numeric_limits<size_t>::max();
+ }
+ }
- // Free the objects
- u8* cur = reinterpret_cast<u8*>(end);
+ return (reinterpret_cast<uintptr_t>(obj) - m_start) / this->GetObjectSize();
+ }
- for (std::size_t i{}; i < num_obj; i++) {
- cur -= obj_size;
- impl.Free(cur);
- }
+ size_t GetPeakIndex() const {
+ return this->GetObjectIndex(reinterpret_cast<const void*>(m_peak));
}
-private:
- using Impl = impl::KSlabHeapImpl;
+ uintptr_t GetSlabHeapAddress() const {
+ return m_start;
+ }
- Impl impl;
- uintptr_t peak{};
- uintptr_t start{};
- uintptr_t end{};
+ size_t GetNumRemaining() const {
+ // Only calculate the number of remaining objects under debug configuration.
+ return 0;
+ }
};
template <typename T>
-class KSlabHeap final : public KSlabHeapBase {
-public:
- enum class AllocationType {
- Host,
- Guest,
- };
+class KSlabHeap final : public KSlabHeapBase<false> {
+private:
+ using BaseHeap = KSlabHeapBase<false>;
- explicit constexpr KSlabHeap(AllocationType allocation_type_ = AllocationType::Host)
- : KSlabHeapBase(), allocation_type{allocation_type_} {}
+public:
+ constexpr KSlabHeap() = default;
- void Initialize(void* memory, std::size_t memory_size) {
- if (allocation_type == AllocationType::Guest) {
- InitializeImpl(sizeof(T), memory, memory_size);
- }
+ void Initialize(void* memory, size_t memory_size) {
+ BaseHeap::Initialize(sizeof(T), memory, memory_size);
}
T* Allocate() {
- switch (allocation_type) {
- case AllocationType::Host:
- // Fallback for cases where we do not yet support allocating guest memory from the slab
- // heap, such as for kernel memory regions.
- return new T;
-
- case AllocationType::Guest:
- T* obj = static_cast<T*>(AllocateImpl());
- if (obj != nullptr) {
- new (obj) T();
- }
- return obj;
- }
+ T* obj = static_cast<T*>(BaseHeap::Allocate());
- UNREACHABLE_MSG("Invalid AllocationType {}", allocation_type);
- return nullptr;
+ if (obj != nullptr) [[likely]] {
+ std::construct_at(obj);
+ }
+ return obj;
}
- T* AllocateWithKernel(KernelCore& kernel) {
- switch (allocation_type) {
- case AllocationType::Host:
- // Fallback for cases where we do not yet support allocating guest memory from the slab
- // heap, such as for kernel memory regions.
- return new T(kernel);
+ T* Allocate(KernelCore& kernel) {
+ T* obj = static_cast<T*>(BaseHeap::Allocate());
- case AllocationType::Guest:
- T* obj = static_cast<T*>(AllocateImpl());
- if (obj != nullptr) {
- new (obj) T(kernel);
- }
- return obj;
+ if (obj != nullptr) [[likely]] {
+ std::construct_at(obj, kernel);
}
-
- UNREACHABLE_MSG("Invalid AllocationType {}", allocation_type);
- return nullptr;
+ return obj;
}
void Free(T* obj) {
- switch (allocation_type) {
- case AllocationType::Host:
- // Fallback for cases where we do not yet support allocating guest memory from the slab
- // heap, such as for kernel memory regions.
- delete obj;
- return;
-
- case AllocationType::Guest:
- FreeImpl(obj);
- return;
- }
-
- UNREACHABLE_MSG("Invalid AllocationType {}", allocation_type);
+ BaseHeap::Free(obj);
}
- constexpr std::size_t GetObjectIndex(const T* obj) const {
- return GetObjectIndexImpl(obj);
+ size_t GetObjectIndex(const T* obj) const {
+ return BaseHeap::GetObjectIndex(obj);
}
-
-private:
- const AllocationType allocation_type;
};
} // namespace Kernel
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index de3ffe0c7..ba7f72c6b 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -210,7 +210,7 @@ ResultCode KThread::Initialize(KThreadFunction func, uintptr_t arg, VAddr user_s
if (owner != nullptr) {
// Setup the TLS, if needed.
if (type == ThreadType::User) {
- tls_address = owner->CreateTLSRegion();
+ R_TRY(owner->CreateThreadLocalRegion(std::addressof(tls_address)));
}
parent = owner;
@@ -305,7 +305,7 @@ void KThread::Finalize() {
// If the thread has a local region, delete it.
if (tls_address != 0) {
- parent->FreeTLSRegion(tls_address);
+ ASSERT(parent->DeleteThreadLocalRegion(tls_address).IsSuccess());
}
// Release any waiters.
@@ -326,6 +326,9 @@ void KThread::Finalize() {
}
}
+ // Release host emulation members.
+ host_context.reset();
+
// Perform inherited finalization.
KSynchronizationObject::Finalize();
}
diff --git a/src/core/hle/kernel/k_thread.h b/src/core/hle/kernel/k_thread.h
index d058db62c..f46db7298 100644
--- a/src/core/hle/kernel/k_thread.h
+++ b/src/core/hle/kernel/k_thread.h
@@ -656,7 +656,7 @@ private:
static_assert(sizeof(SyncObjectBuffer::sync_objects) == sizeof(SyncObjectBuffer::handles));
struct ConditionVariableComparator {
- struct LightCompareType {
+ struct RedBlackKeyType {
u64 cv_key{};
s32 priority{};
@@ -672,8 +672,8 @@ private:
template <typename T>
requires(
std::same_as<T, KThread> ||
- std::same_as<T, LightCompareType>) static constexpr int Compare(const T& lhs,
- const KThread& rhs) {
+ std::same_as<T, RedBlackKeyType>) static constexpr int Compare(const T& lhs,
+ const KThread& rhs) {
const u64 l_key = lhs.GetConditionVariableKey();
const u64 r_key = rhs.GetConditionVariableKey();
diff --git a/src/core/hle/kernel/k_thread_local_page.cpp b/src/core/hle/kernel/k_thread_local_page.cpp
new file mode 100644
index 000000000..17b233fca
--- /dev/null
+++ b/src/core/hle/kernel/k_thread_local_page.cpp
@@ -0,0 +1,66 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/scope_exit.h"
+#include "core/core.h"
+#include "core/hle/kernel/k_memory_block.h"
+#include "core/hle/kernel/k_page_table.h"
+#include "core/hle/kernel/k_process.h"
+#include "core/hle/kernel/k_thread_local_page.h"
+#include "core/hle/kernel/kernel.h"
+
+namespace Kernel {
+
+ResultCode KThreadLocalPage::Initialize(KernelCore& kernel, KProcess* process) {
+ // Set that this process owns us.
+ m_owner = process;
+ m_kernel = &kernel;
+
+ // Allocate a new page.
+ KPageBuffer* page_buf = KPageBuffer::Allocate(kernel);
+ R_UNLESS(page_buf != nullptr, ResultOutOfMemory);
+ auto page_buf_guard = SCOPE_GUARD({ KPageBuffer::Free(kernel, page_buf); });
+
+ // Map the address in.
+ const auto phys_addr = kernel.System().DeviceMemory().GetPhysicalAddr(page_buf);
+ R_TRY(m_owner->PageTable().MapPages(std::addressof(m_virt_addr), 1, PageSize, phys_addr,
+ KMemoryState::ThreadLocal,
+ KMemoryPermission::UserReadWrite));
+
+ // We succeeded.
+ page_buf_guard.Cancel();
+
+ return ResultSuccess;
+}
+
+ResultCode KThreadLocalPage::Finalize() {
+ // Get the physical address of the page.
+ const PAddr phys_addr = m_owner->PageTable().GetPhysicalAddr(m_virt_addr);
+ ASSERT(phys_addr);
+
+ // Unmap the page.
+ R_TRY(m_owner->PageTable().UnmapPages(this->GetAddress(), 1, KMemoryState::ThreadLocal));
+
+ // Free the page.
+ KPageBuffer::Free(*m_kernel, KPageBuffer::FromPhysicalAddress(m_kernel->System(), phys_addr));
+
+ return ResultSuccess;
+}
+
+VAddr KThreadLocalPage::Reserve() {
+ for (size_t i = 0; i < m_is_region_free.size(); i++) {
+ if (m_is_region_free[i]) {
+ m_is_region_free[i] = false;
+ return this->GetRegionAddress(i);
+ }
+ }
+
+ return 0;
+}
+
+void KThreadLocalPage::Release(VAddr addr) {
+ m_is_region_free[this->GetRegionIndex(addr)] = true;
+}
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/k_thread_local_page.h b/src/core/hle/kernel/k_thread_local_page.h
new file mode 100644
index 000000000..658c67e94
--- /dev/null
+++ b/src/core/hle/kernel/k_thread_local_page.h
@@ -0,0 +1,112 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <algorithm>
+#include <array>
+
+#include "common/alignment.h"
+#include "common/assert.h"
+#include "common/common_types.h"
+#include "common/intrusive_red_black_tree.h"
+#include "core/hle/kernel/k_page_buffer.h"
+#include "core/hle/kernel/memory_types.h"
+#include "core/hle/kernel/slab_helpers.h"
+#include "core/hle/result.h"
+
+namespace Kernel {
+
+class KernelCore;
+class KProcess;
+
+class KThreadLocalPage final : public Common::IntrusiveRedBlackTreeBaseNode<KThreadLocalPage>,
+ public KSlabAllocated<KThreadLocalPage> {
+public:
+ static constexpr size_t RegionsPerPage = PageSize / Svc::ThreadLocalRegionSize;
+ static_assert(RegionsPerPage > 0);
+
+public:
+ constexpr explicit KThreadLocalPage(VAddr addr = {}) : m_virt_addr(addr) {
+ m_is_region_free.fill(true);
+ }
+
+ constexpr VAddr GetAddress() const {
+ return m_virt_addr;
+ }
+
+ ResultCode Initialize(KernelCore& kernel, KProcess* process);
+ ResultCode Finalize();
+
+ VAddr Reserve();
+ void Release(VAddr addr);
+
+ bool IsAllUsed() const {
+ return std::ranges::all_of(m_is_region_free.begin(), m_is_region_free.end(),
+ [](bool is_free) { return !is_free; });
+ }
+
+ bool IsAllFree() const {
+ return std::ranges::all_of(m_is_region_free.begin(), m_is_region_free.end(),
+ [](bool is_free) { return is_free; });
+ }
+
+ bool IsAnyUsed() const {
+ return !this->IsAllFree();
+ }
+
+ bool IsAnyFree() const {
+ return !this->IsAllUsed();
+ }
+
+public:
+ using RedBlackKeyType = VAddr;
+
+ static constexpr RedBlackKeyType GetRedBlackKey(const RedBlackKeyType& v) {
+ return v;
+ }
+ static constexpr RedBlackKeyType GetRedBlackKey(const KThreadLocalPage& v) {
+ return v.GetAddress();
+ }
+
+ template <typename T>
+ requires(std::same_as<T, KThreadLocalPage> ||
+ std::same_as<T, RedBlackKeyType>) static constexpr int Compare(const T& lhs,
+ const KThreadLocalPage&
+ rhs) {
+ const VAddr lval = GetRedBlackKey(lhs);
+ const VAddr rval = GetRedBlackKey(rhs);
+
+ if (lval < rval) {
+ return -1;
+ } else if (lval == rval) {
+ return 0;
+ } else {
+ return 1;
+ }
+ }
+
+private:
+ constexpr VAddr GetRegionAddress(size_t i) const {
+ return this->GetAddress() + i * Svc::ThreadLocalRegionSize;
+ }
+
+ constexpr bool Contains(VAddr addr) const {
+ return this->GetAddress() <= addr && addr < this->GetAddress() + PageSize;
+ }
+
+ constexpr size_t GetRegionIndex(VAddr addr) const {
+ ASSERT(Common::IsAligned(addr, Svc::ThreadLocalRegionSize));
+ ASSERT(this->Contains(addr));
+ return (addr - this->GetAddress()) / Svc::ThreadLocalRegionSize;
+ }
+
+private:
+ VAddr m_virt_addr{};
+ KProcess* m_owner{};
+ KernelCore* m_kernel{};
+ std::array<bool, RegionsPerPage> m_is_region_free{};
+};
+
+} // namespace Kernel
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 49c0714ed..f9828bc43 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -52,7 +52,7 @@ namespace Kernel {
struct KernelCore::Impl {
explicit Impl(Core::System& system_, KernelCore& kernel_)
- : time_manager{system_}, object_list_container{kernel_},
+ : time_manager{system_},
service_threads_manager{1, "yuzu:ServiceThreadsManager"}, system{system_} {}
void SetMulticore(bool is_multi) {
@@ -60,6 +60,7 @@ struct KernelCore::Impl {
}
void Initialize(KernelCore& kernel) {
+ global_object_list_container = std::make_unique<KAutoObjectWithListContainer>(kernel);
global_scheduler_context = std::make_unique<Kernel::GlobalSchedulerContext>(kernel);
global_handle_table = std::make_unique<Kernel::KHandleTable>(kernel);
global_handle_table->Initialize(KHandleTable::MaxTableSize);
@@ -70,14 +71,13 @@ struct KernelCore::Impl {
// Derive the initial memory layout from the emulated board
Init::InitializeSlabResourceCounts(kernel);
- KMemoryLayout memory_layout;
- DeriveInitialMemoryLayout(memory_layout);
- Init::InitializeSlabHeaps(system, memory_layout);
+ DeriveInitialMemoryLayout();
+ Init::InitializeSlabHeaps(system, *memory_layout);
// Initialize kernel memory and resources.
- InitializeSystemResourceLimit(kernel, system.CoreTiming(), memory_layout);
- InitializeMemoryLayout(memory_layout);
- InitializePageSlab();
+ InitializeSystemResourceLimit(kernel, system.CoreTiming());
+ InitializeMemoryLayout();
+ Init::InitializeKPageBufferSlabHeap(system);
InitializeSchedulers();
InitializeSuspendThreads();
InitializePreemption(kernel);
@@ -108,19 +108,6 @@ struct KernelCore::Impl {
for (auto* server_port : server_ports_) {
server_port->Close();
}
- // Close all open server sessions.
- std::unordered_set<KServerSession*> server_sessions_;
- {
- std::lock_guard lk(server_sessions_lock);
- server_sessions_ = server_sessions;
- server_sessions.clear();
- }
- for (auto* server_session : server_sessions_) {
- server_session->Close();
- }
-
- // Ensure that the object list container is finalized and properly shutdown.
- object_list_container.Finalize();
// Ensures all service threads gracefully shutdown.
ClearServiceThreads();
@@ -195,11 +182,15 @@ struct KernelCore::Impl {
{
std::lock_guard lk(registered_objects_lock);
if (registered_objects.size()) {
- LOG_WARNING(Kernel, "{} kernel objects were dangling on shutdown!",
- registered_objects.size());
+ LOG_DEBUG(Kernel, "{} kernel objects were dangling on shutdown!",
+ registered_objects.size());
registered_objects.clear();
}
}
+
+ // Ensure that the object list container is finalized and properly shutdown.
+ global_object_list_container->Finalize();
+ global_object_list_container.reset();
}
void InitializePhysicalCores() {
@@ -219,12 +210,11 @@ struct KernelCore::Impl {
// Creates the default system resource limit
void InitializeSystemResourceLimit(KernelCore& kernel,
- const Core::Timing::CoreTiming& core_timing,
- const KMemoryLayout& memory_layout) {
+ const Core::Timing::CoreTiming& core_timing) {
system_resource_limit = KResourceLimit::Create(system.Kernel());
system_resource_limit->Initialize(&core_timing);
- const auto [total_size, kernel_size] = memory_layout.GetTotalAndKernelMemorySizes();
+ const auto [total_size, kernel_size] = memory_layout->GetTotalAndKernelMemorySizes();
// If setting the default system values fails, then something seriously wrong has occurred.
ASSERT(system_resource_limit->SetLimitValue(LimitableResource::PhysicalMemory, total_size)
@@ -240,13 +230,6 @@ struct KernelCore::Impl {
constexpr u64 secure_applet_memory_size{4_MiB};
ASSERT(system_resource_limit->Reserve(LimitableResource::PhysicalMemory,
secure_applet_memory_size));
-
- // This memory seems to be reserved on hardware, but is not reserved/used by yuzu.
- // Likely Horizon OS reserved memory
- // TODO(ameerj): Derive the memory rather than hardcode it.
- constexpr u64 unknown_reserved_memory{0x2f896000};
- ASSERT(system_resource_limit->Reserve(LimitableResource::PhysicalMemory,
- unknown_reserved_memory));
}
void InitializePreemption(KernelCore& kernel) {
@@ -300,15 +283,16 @@ struct KernelCore::Impl {
// Gets the dummy KThread for the caller, allocating a new one if this is the first time
KThread* GetHostDummyThread() {
- auto make_thread = [this]() {
- KThread* thread = KThread::Create(system.Kernel());
+ auto initialize = [this](KThread* thread) {
ASSERT(KThread::InitializeDummyThread(thread).IsSuccess());
thread->SetName(fmt::format("DummyThread:{}", GetHostThreadId()));
return thread;
};
- thread_local KThread* saved_thread = make_thread();
- return saved_thread;
+ thread_local auto raw_thread = KThread(system.Kernel());
+ thread_local auto thread = initialize(&raw_thread);
+
+ return thread;
}
/// Registers a CPU core thread by allocating a host thread ID for it
@@ -360,16 +344,18 @@ struct KernelCore::Impl {
return schedulers[thread_id]->GetCurrentThread();
}
- void DeriveInitialMemoryLayout(KMemoryLayout& memory_layout) {
+ void DeriveInitialMemoryLayout() {
+ memory_layout = std::make_unique<KMemoryLayout>();
+
// Insert the root region for the virtual memory tree, from which all other regions will
// derive.
- memory_layout.GetVirtualMemoryRegionTree().InsertDirectly(
+ memory_layout->GetVirtualMemoryRegionTree().InsertDirectly(
KernelVirtualAddressSpaceBase,
KernelVirtualAddressSpaceBase + KernelVirtualAddressSpaceSize - 1);
// Insert the root region for the physical memory tree, from which all other regions will
// derive.
- memory_layout.GetPhysicalMemoryRegionTree().InsertDirectly(
+ memory_layout->GetPhysicalMemoryRegionTree().InsertDirectly(
KernelPhysicalAddressSpaceBase,
KernelPhysicalAddressSpaceBase + KernelPhysicalAddressSpaceSize - 1);
@@ -386,7 +372,7 @@ struct KernelCore::Impl {
if (!(kernel_region_start + KernelRegionSize - 1 <= KernelVirtualAddressSpaceLast)) {
kernel_region_size = KernelVirtualAddressSpaceEnd - kernel_region_start;
}
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
kernel_region_start, kernel_region_size, KMemoryRegionType_Kernel));
// Setup the code region.
@@ -395,11 +381,11 @@ struct KernelCore::Impl {
Common::AlignDown(code_start_virt_addr, CodeRegionAlign);
constexpr VAddr code_region_end = Common::AlignUp(code_end_virt_addr, CodeRegionAlign);
constexpr size_t code_region_size = code_region_end - code_region_start;
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
code_region_start, code_region_size, KMemoryRegionType_KernelCode));
// Setup board-specific device physical regions.
- Init::SetupDevicePhysicalMemoryRegions(memory_layout);
+ Init::SetupDevicePhysicalMemoryRegions(*memory_layout);
// Determine the amount of space needed for the misc region.
size_t misc_region_needed_size;
@@ -408,7 +394,7 @@ struct KernelCore::Impl {
misc_region_needed_size = Core::Hardware::NUM_CPU_CORES * (3 * (PageSize + PageSize));
// Account for each auto-map device.
- for (const auto& region : memory_layout.GetPhysicalMemoryRegionTree()) {
+ for (const auto& region : memory_layout->GetPhysicalMemoryRegionTree()) {
if (region.HasTypeAttribute(KMemoryRegionAttr_ShouldKernelMap)) {
// Check that the region is valid.
ASSERT(region.GetEndAddress() != 0);
@@ -433,22 +419,22 @@ struct KernelCore::Impl {
// Setup the misc region.
const VAddr misc_region_start =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
misc_region_size, MiscRegionAlign, KMemoryRegionType_Kernel);
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
misc_region_start, misc_region_size, KMemoryRegionType_KernelMisc));
// Setup the stack region.
constexpr size_t StackRegionSize = 14_MiB;
constexpr size_t StackRegionAlign = KernelAslrAlignment;
const VAddr stack_region_start =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
StackRegionSize, StackRegionAlign, KMemoryRegionType_Kernel);
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
stack_region_start, StackRegionSize, KMemoryRegionType_KernelStack));
// Determine the size of the resource region.
- const size_t resource_region_size = memory_layout.GetResourceRegionSizeForInit();
+ const size_t resource_region_size = memory_layout->GetResourceRegionSizeForInit();
// Determine the size of the slab region.
const size_t slab_region_size =
@@ -465,23 +451,23 @@ struct KernelCore::Impl {
Common::AlignUp(code_end_phys_addr + slab_region_size, SlabRegionAlign) -
Common::AlignDown(code_end_phys_addr, SlabRegionAlign);
const VAddr slab_region_start =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
slab_region_needed_size, SlabRegionAlign, KMemoryRegionType_Kernel) +
(code_end_phys_addr % SlabRegionAlign);
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
slab_region_start, slab_region_size, KMemoryRegionType_KernelSlab));
// Setup the temp region.
constexpr size_t TempRegionSize = 128_MiB;
constexpr size_t TempRegionAlign = KernelAslrAlignment;
const VAddr temp_region_start =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegion(
TempRegionSize, TempRegionAlign, KMemoryRegionType_Kernel);
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(temp_region_start, TempRegionSize,
- KMemoryRegionType_KernelTemp));
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(temp_region_start, TempRegionSize,
+ KMemoryRegionType_KernelTemp));
// Automatically map in devices that have auto-map attributes.
- for (auto& region : memory_layout.GetPhysicalMemoryRegionTree()) {
+ for (auto& region : memory_layout->GetPhysicalMemoryRegionTree()) {
// We only care about kernel regions.
if (!region.IsDerivedFrom(KMemoryRegionType_Kernel)) {
continue;
@@ -508,21 +494,21 @@ struct KernelCore::Impl {
const size_t map_size =
Common::AlignUp(region.GetEndAddress(), PageSize) - map_phys_addr;
const VAddr map_virt_addr =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegionWithGuard(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegionWithGuard(
map_size, PageSize, KMemoryRegionType_KernelMisc, PageSize);
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
map_virt_addr, map_size, KMemoryRegionType_KernelMiscMappedDevice));
region.SetPairAddress(map_virt_addr + region.GetAddress() - map_phys_addr);
}
- Init::SetupDramPhysicalMemoryRegions(memory_layout);
+ Init::SetupDramPhysicalMemoryRegions(*memory_layout);
// Insert a physical region for the kernel code region.
- ASSERT(memory_layout.GetPhysicalMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
code_start_phys_addr, code_region_size, KMemoryRegionType_DramKernelCode));
// Insert a physical region for the kernel slab region.
- ASSERT(memory_layout.GetPhysicalMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
slab_start_phys_addr, slab_region_size, KMemoryRegionType_DramKernelSlab));
// Determine size available for kernel page table heaps, requiring > 8 MB.
@@ -531,12 +517,12 @@ struct KernelCore::Impl {
ASSERT(page_table_heap_size / 4_MiB > 2);
// Insert a physical region for the kernel page table heap region
- ASSERT(memory_layout.GetPhysicalMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
slab_end_phys_addr, page_table_heap_size, KMemoryRegionType_DramKernelPtHeap));
// All DRAM regions that we haven't tagged by this point will be mapped under the linear
// mapping. Tag them.
- for (auto& region : memory_layout.GetPhysicalMemoryRegionTree()) {
+ for (auto& region : memory_layout->GetPhysicalMemoryRegionTree()) {
if (region.GetType() == KMemoryRegionType_Dram) {
// Check that the region is valid.
ASSERT(region.GetEndAddress() != 0);
@@ -548,7 +534,7 @@ struct KernelCore::Impl {
// Get the linear region extents.
const auto linear_extents =
- memory_layout.GetPhysicalMemoryRegionTree().GetDerivedRegionExtents(
+ memory_layout->GetPhysicalMemoryRegionTree().GetDerivedRegionExtents(
KMemoryRegionAttr_LinearMapped);
ASSERT(linear_extents.GetEndAddress() != 0);
@@ -560,7 +546,7 @@ struct KernelCore::Impl {
Common::AlignUp(linear_extents.GetEndAddress(), LinearRegionAlign) -
aligned_linear_phys_start;
const VAddr linear_region_start =
- memory_layout.GetVirtualMemoryRegionTree().GetRandomAlignedRegionWithGuard(
+ memory_layout->GetVirtualMemoryRegionTree().GetRandomAlignedRegionWithGuard(
linear_region_size, LinearRegionAlign, KMemoryRegionType_None, LinearRegionAlign);
const u64 linear_region_phys_to_virt_diff = linear_region_start - aligned_linear_phys_start;
@@ -569,7 +555,7 @@ struct KernelCore::Impl {
{
PAddr cur_phys_addr = 0;
u64 cur_size = 0;
- for (auto& region : memory_layout.GetPhysicalMemoryRegionTree()) {
+ for (auto& region : memory_layout->GetPhysicalMemoryRegionTree()) {
if (!region.HasTypeAttribute(KMemoryRegionAttr_LinearMapped)) {
continue;
}
@@ -588,55 +574,49 @@ struct KernelCore::Impl {
const VAddr region_virt_addr =
region.GetAddress() + linear_region_phys_to_virt_diff;
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
region_virt_addr, region.GetSize(),
GetTypeForVirtualLinearMapping(region.GetType())));
region.SetPairAddress(region_virt_addr);
KMemoryRegion* virt_region =
- memory_layout.GetVirtualMemoryRegionTree().FindModifiable(region_virt_addr);
+ memory_layout->GetVirtualMemoryRegionTree().FindModifiable(region_virt_addr);
ASSERT(virt_region != nullptr);
virt_region->SetPairAddress(region.GetAddress());
}
}
// Insert regions for the initial page table region.
- ASSERT(memory_layout.GetPhysicalMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetPhysicalMemoryRegionTree().Insert(
resource_end_phys_addr, KernelPageTableHeapSize, KMemoryRegionType_DramKernelInitPt));
- ASSERT(memory_layout.GetVirtualMemoryRegionTree().Insert(
+ ASSERT(memory_layout->GetVirtualMemoryRegionTree().Insert(
resource_end_phys_addr + linear_region_phys_to_virt_diff, KernelPageTableHeapSize,
KMemoryRegionType_VirtualDramKernelInitPt));
// All linear-mapped DRAM regions that we haven't tagged by this point will be allocated to
// some pool partition. Tag them.
- for (auto& region : memory_layout.GetPhysicalMemoryRegionTree()) {
+ for (auto& region : memory_layout->GetPhysicalMemoryRegionTree()) {
if (region.GetType() == (KMemoryRegionType_Dram | KMemoryRegionAttr_LinearMapped)) {
region.SetType(KMemoryRegionType_DramPoolPartition);
}
}
// Setup all other memory regions needed to arrange the pool partitions.
- Init::SetupPoolPartitionMemoryRegions(memory_layout);
+ Init::SetupPoolPartitionMemoryRegions(*memory_layout);
// Cache all linear regions in their own trees for faster access, later.
- memory_layout.InitializeLinearMemoryRegionTrees(aligned_linear_phys_start,
- linear_region_start);
+ memory_layout->InitializeLinearMemoryRegionTrees(aligned_linear_phys_start,
+ linear_region_start);
}
- void InitializeMemoryLayout(const KMemoryLayout& memory_layout) {
- const auto system_pool = memory_layout.GetKernelSystemPoolRegionPhysicalExtents();
- const auto applet_pool = memory_layout.GetKernelAppletPoolRegionPhysicalExtents();
- const auto application_pool = memory_layout.GetKernelApplicationPoolRegionPhysicalExtents();
+ void InitializeMemoryLayout() {
+ const auto system_pool = memory_layout->GetKernelSystemPoolRegionPhysicalExtents();
- // Initialize memory managers
+ // Initialize the memory manager.
memory_manager = std::make_unique<KMemoryManager>(system);
- memory_manager->InitializeManager(KMemoryManager::Pool::Application,
- application_pool.GetAddress(),
- application_pool.GetEndAddress());
- memory_manager->InitializeManager(KMemoryManager::Pool::Applet, applet_pool.GetAddress(),
- applet_pool.GetEndAddress());
- memory_manager->InitializeManager(KMemoryManager::Pool::System, system_pool.GetAddress(),
- system_pool.GetEndAddress());
+ const auto& management_region = memory_layout->GetPoolManagementRegion();
+ ASSERT(management_region.GetEndAddress() != 0);
+ memory_manager->Initialize(management_region.GetAddress(), management_region.GetSize());
// Setup memory regions for emulated processes
// TODO(bunnei): These should not be hardcoded regions initialized within the kernel
@@ -673,22 +653,6 @@ struct KernelCore::Impl {
time_phys_addr, time_size, "Time:SharedMemory");
}
- void InitializePageSlab() {
- // Allocate slab heaps
- user_slab_heap_pages =
- std::make_unique<KSlabHeap<Page>>(KSlabHeap<Page>::AllocationType::Guest);
-
- // TODO(ameerj): This should be derived, not hardcoded within the kernel
- constexpr u64 user_slab_heap_size{0x3de000};
- // Reserve slab heaps
- ASSERT(
- system_resource_limit->Reserve(LimitableResource::PhysicalMemory, user_slab_heap_size));
- // Initialize slab heap
- user_slab_heap_pages->Initialize(
- system.DeviceMemory().GetPointer(Core::DramMemoryMap::SlabHeapBase),
- user_slab_heap_size);
- }
-
KClientPort* CreateNamedServicePort(std::string name) {
auto search = service_interface_factory.find(name);
if (search == service_interface_factory.end()) {
@@ -726,7 +690,6 @@ struct KernelCore::Impl {
}
std::mutex server_ports_lock;
- std::mutex server_sessions_lock;
std::mutex registered_objects_lock;
std::mutex registered_in_use_objects_lock;
@@ -750,14 +713,13 @@ struct KernelCore::Impl {
// stores all the objects in place.
std::unique_ptr<KHandleTable> global_handle_table;
- KAutoObjectWithListContainer object_list_container;
+ std::unique_ptr<KAutoObjectWithListContainer> global_object_list_container;
/// Map of named ports managed by the kernel, which can be retrieved using
/// the ConnectToPort SVC.
std::unordered_map<std::string, ServiceInterfaceFactory> service_interface_factory;
NamedPortTable named_ports;
std::unordered_set<KServerPort*> server_ports;
- std::unordered_set<KServerSession*> server_sessions;
std::unordered_set<KAutoObject*> registered_objects;
std::unordered_set<KAutoObject*> registered_in_use_objects;
@@ -769,7 +731,6 @@ struct KernelCore::Impl {
// Kernel memory management
std::unique_ptr<KMemoryManager> memory_manager;
- std::unique_ptr<KSlabHeap<Page>> user_slab_heap_pages;
// Shared memory for services
Kernel::KSharedMemory* hid_shared_mem{};
@@ -777,6 +738,9 @@ struct KernelCore::Impl {
Kernel::KSharedMemory* irs_shared_mem{};
Kernel::KSharedMemory* time_shared_mem{};
+ // Memory layout
+ std::unique_ptr<KMemoryLayout> memory_layout;
+
// Threads used for services
std::unordered_set<std::shared_ptr<Kernel::ServiceThread>> service_threads;
Common::ThreadWorker service_threads_manager;
@@ -925,11 +889,11 @@ const Core::ExclusiveMonitor& KernelCore::GetExclusiveMonitor() const {
}
KAutoObjectWithListContainer& KernelCore::ObjectListContainer() {
- return impl->object_list_container;
+ return *impl->global_object_list_container;
}
const KAutoObjectWithListContainer& KernelCore::ObjectListContainer() const {
- return impl->object_list_container;
+ return *impl->global_object_list_container;
}
void KernelCore::InvalidateAllInstructionCaches() {
@@ -959,16 +923,6 @@ KClientPort* KernelCore::CreateNamedServicePort(std::string name) {
return impl->CreateNamedServicePort(std::move(name));
}
-void KernelCore::RegisterServerSession(KServerSession* server_session) {
- std::lock_guard lk(impl->server_sessions_lock);
- impl->server_sessions.insert(server_session);
-}
-
-void KernelCore::UnregisterServerSession(KServerSession* server_session) {
- std::lock_guard lk(impl->server_sessions_lock);
- impl->server_sessions.erase(server_session);
-}
-
void KernelCore::RegisterKernelObject(KAutoObject* object) {
std::lock_guard lk(impl->registered_objects_lock);
impl->registered_objects.insert(object);
@@ -1041,14 +995,6 @@ const KMemoryManager& KernelCore::MemoryManager() const {
return *impl->memory_manager;
}
-KSlabHeap<Page>& KernelCore::GetUserSlabHeapPages() {
- return *impl->user_slab_heap_pages;
-}
-
-const KSlabHeap<Page>& KernelCore::GetUserSlabHeapPages() const {
- return *impl->user_slab_heap_pages;
-}
-
Kernel::KSharedMemory& KernelCore::GetHidSharedMem() {
return *impl->hid_shared_mem;
}
@@ -1142,6 +1088,10 @@ const KWorkerTaskManager& KernelCore::WorkerTaskManager() const {
return impl->worker_task_manager;
}
+const KMemoryLayout& KernelCore::MemoryLayout() const {
+ return *impl->memory_layout;
+}
+
bool KernelCore::IsPhantomModeForSingleCore() const {
return impl->IsPhantomModeForSingleCore();
}
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 0e04fc3bb..7087bbda6 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -41,7 +41,9 @@ class KClientSession;
class KEvent;
class KHandleTable;
class KLinkedListNode;
+class KMemoryLayout;
class KMemoryManager;
+class KPageBuffer;
class KPort;
class KProcess;
class KResourceLimit;
@@ -51,6 +53,7 @@ class KSession;
class KSharedMemory;
class KSharedMemoryInfo;
class KThread;
+class KThreadLocalPage;
class KTransferMemory;
class KWorkerTaskManager;
class KWritableEvent;
@@ -193,14 +196,6 @@ public:
/// Opens a port to a service previously registered with RegisterNamedService.
KClientPort* CreateNamedServicePort(std::string name);
- /// Registers a server session with the gobal emulation state, to be freed on shutdown. This is
- /// necessary because we do not emulate processes for HLE sessions.
- void RegisterServerSession(KServerSession* server_session);
-
- /// Unregisters a server session previously registered with RegisterServerSession when it was
- /// destroyed during the current emulation session.
- void UnregisterServerSession(KServerSession* server_session);
-
/// Registers all kernel objects with the global emulation state, this is purely for tracking
/// leaks after emulation has been shutdown.
void RegisterKernelObject(KAutoObject* object);
@@ -238,12 +233,6 @@ public:
/// Gets the virtual memory manager for the kernel.
const KMemoryManager& MemoryManager() const;
- /// Gets the slab heap allocated for user space pages.
- KSlabHeap<Page>& GetUserSlabHeapPages();
-
- /// Gets the slab heap allocated for user space pages.
- const KSlabHeap<Page>& GetUserSlabHeapPages() const;
-
/// Gets the shared memory object for HID services.
Kernel::KSharedMemory& GetHidSharedMem();
@@ -335,6 +324,10 @@ public:
return slab_heap_container->writeable_event;
} else if constexpr (std::is_same_v<T, KCodeMemory>) {
return slab_heap_container->code_memory;
+ } else if constexpr (std::is_same_v<T, KPageBuffer>) {
+ return slab_heap_container->page_buffer;
+ } else if constexpr (std::is_same_v<T, KThreadLocalPage>) {
+ return slab_heap_container->thread_local_page;
}
}
@@ -350,6 +343,9 @@ public:
/// Gets the current worker task manager, used for dispatching KThread/KProcess tasks.
const KWorkerTaskManager& WorkerTaskManager() const;
+ /// Gets the memory layout.
+ const KMemoryLayout& MemoryLayout() const;
+
private:
friend class KProcess;
friend class KThread;
@@ -393,6 +389,8 @@ private:
KSlabHeap<KTransferMemory> transfer_memory;
KSlabHeap<KWritableEvent> writeable_event;
KSlabHeap<KCodeMemory> code_memory;
+ KSlabHeap<KPageBuffer> page_buffer;
+ KSlabHeap<KThreadLocalPage> thread_local_page;
};
std::unique_ptr<SlabHeapContainer> slab_heap_container;
diff --git a/src/core/hle/kernel/service_thread.cpp b/src/core/hle/kernel/service_thread.cpp
index 4eb3a5988..52d25b837 100644
--- a/src/core/hle/kernel/service_thread.cpp
+++ b/src/core/hle/kernel/service_thread.cpp
@@ -49,12 +49,9 @@ ServiceThread::Impl::Impl(KernelCore& kernel, std::size_t num_threads, const std
return;
}
+ // Allocate a dummy guest thread for this host thread.
kernel.RegisterHostThread();
- // Ensure the dummy thread allocated for this host thread is closed on exit.
- auto* dummy_thread = kernel.GetCurrentEmuThread();
- SCOPE_EXIT({ dummy_thread->Close(); });
-
while (true) {
std::function<void()> task;
diff --git a/src/core/hle/kernel/slab_helpers.h b/src/core/hle/kernel/slab_helpers.h
index f1c11256e..dc1e48fc9 100644
--- a/src/core/hle/kernel/slab_helpers.h
+++ b/src/core/hle/kernel/slab_helpers.h
@@ -59,7 +59,7 @@ class KAutoObjectWithSlabHeapAndContainer : public Base {
private:
static Derived* Allocate(KernelCore& kernel) {
- return kernel.SlabHeap<Derived>().AllocateWithKernel(kernel);
+ return kernel.SlabHeap<Derived>().Allocate(kernel);
}
static void Free(KernelCore& kernel, Derived* obj) {
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 4f7aebf3f..839171e85 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -396,7 +396,7 @@ static ResultCode GetProcessId(Core::System& system, u64* out_process_id, Handle
// Get the process id.
*out_process_id = process->GetId();
- return ResultInvalidHandle;
+ return ResultSuccess;
}
static ResultCode GetProcessId32(Core::System& system, u32* out_process_id_low,
@@ -645,6 +645,10 @@ static void OutputDebugString(Core::System& system, VAddr address, u64 len) {
LOG_DEBUG(Debug_Emulated, "{}", str);
}
+static void OutputDebugString32(Core::System& system, u32 address, u32 len) {
+ OutputDebugString(system, address, len);
+}
+
/// Gets system/memory information for the current process
static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle handle,
u64 info_sub_id) {
@@ -1404,7 +1408,7 @@ static ResultCode UnmapProcessMemory(Core::System& system, VAddr dst_address, Ha
}
static ResultCode CreateCodeMemory(Core::System& system, Handle* out, VAddr address, size_t size) {
- LOG_TRACE(Kernel_SVC, "called, handle_out=0x{:X}, address=0x{:X}, size=0x{:X}",
+ LOG_TRACE(Kernel_SVC, "called, handle_out={}, address=0x{:X}, size=0x{:X}",
static_cast<void*>(out), address, size);
// Get kernel instance.
auto& kernel = system.Kernel();
@@ -1438,6 +1442,10 @@ static ResultCode CreateCodeMemory(Core::System& system, Handle* out, VAddr addr
return ResultSuccess;
}
+static ResultCode CreateCodeMemory32(Core::System& system, Handle* out, u32 address, u32 size) {
+ return CreateCodeMemory(system, out, address, size);
+}
+
static ResultCode ControlCodeMemory(Core::System& system, Handle code_memory_handle, u32 operation,
VAddr address, size_t size, Svc::MemoryPermission perm) {
@@ -1517,6 +1525,12 @@ static ResultCode ControlCodeMemory(Core::System& system, Handle code_memory_han
return ResultSuccess;
}
+static ResultCode ControlCodeMemory32(Core::System& system, Handle code_memory_handle,
+ u32 operation, u64 address, u64 size,
+ Svc::MemoryPermission perm) {
+ return ControlCodeMemory(system, code_memory_handle, operation, address, size, perm);
+}
+
static ResultCode QueryProcessMemory(Core::System& system, VAddr memory_info_address,
VAddr page_info_address, Handle process_handle,
VAddr address) {
@@ -2318,7 +2332,7 @@ static ResultCode CreateEvent(Core::System& system, Handle* out_write, Handle* o
R_UNLESS(event != nullptr, ResultOutOfResource);
// Initialize the event.
- event->Initialize("CreateEvent");
+ event->Initialize("CreateEvent", kernel.CurrentProcess());
// Commit the thread reservation.
event_reservation.Commit();
@@ -2559,9 +2573,9 @@ struct FunctionDef {
} // namespace
static const FunctionDef SVC_Table_32[] = {
- {0x00, nullptr, "Unknown"},
+ {0x00, nullptr, "Unknown0"},
{0x01, SvcWrap32<SetHeapSize32>, "SetHeapSize32"},
- {0x02, nullptr, "Unknown"},
+ {0x02, nullptr, "SetMemoryPermission32"},
{0x03, SvcWrap32<SetMemoryAttribute32>, "SetMemoryAttribute32"},
{0x04, SvcWrap32<MapMemory32>, "MapMemory32"},
{0x05, SvcWrap32<UnmapMemory32>, "UnmapMemory32"},
@@ -2591,97 +2605,97 @@ static const FunctionDef SVC_Table_32[] = {
{0x1d, SvcWrap32<SignalProcessWideKey32>, "SignalProcessWideKey32"},
{0x1e, SvcWrap32<GetSystemTick32>, "GetSystemTick32"},
{0x1f, SvcWrap32<ConnectToNamedPort32>, "ConnectToNamedPort32"},
- {0x20, nullptr, "Unknown"},
+ {0x20, nullptr, "SendSyncRequestLight32"},
{0x21, SvcWrap32<SendSyncRequest32>, "SendSyncRequest32"},
{0x22, nullptr, "SendSyncRequestWithUserBuffer32"},
- {0x23, nullptr, "Unknown"},
+ {0x23, nullptr, "SendAsyncRequestWithUserBuffer32"},
{0x24, SvcWrap32<GetProcessId32>, "GetProcessId32"},
{0x25, SvcWrap32<GetThreadId32>, "GetThreadId32"},
{0x26, SvcWrap32<Break32>, "Break32"},
- {0x27, nullptr, "OutputDebugString32"},
- {0x28, nullptr, "Unknown"},
+ {0x27, SvcWrap32<OutputDebugString32>, "OutputDebugString32"},
+ {0x28, nullptr, "ReturnFromException32"},
{0x29, SvcWrap32<GetInfo32>, "GetInfo32"},
- {0x2a, nullptr, "Unknown"},
- {0x2b, nullptr, "Unknown"},
+ {0x2a, nullptr, "FlushEntireDataCache32"},
+ {0x2b, nullptr, "FlushDataCache32"},
{0x2c, SvcWrap32<MapPhysicalMemory32>, "MapPhysicalMemory32"},
{0x2d, SvcWrap32<UnmapPhysicalMemory32>, "UnmapPhysicalMemory32"},
- {0x2e, nullptr, "Unknown"},
- {0x2f, nullptr, "Unknown"},
- {0x30, nullptr, "Unknown"},
- {0x31, nullptr, "Unknown"},
+ {0x2e, nullptr, "GetDebugFutureThreadInfo32"},
+ {0x2f, nullptr, "GetLastThreadInfo32"},
+ {0x30, nullptr, "GetResourceLimitLimitValue32"},
+ {0x31, nullptr, "GetResourceLimitCurrentValue32"},
{0x32, SvcWrap32<SetThreadActivity32>, "SetThreadActivity32"},
{0x33, SvcWrap32<GetThreadContext32>, "GetThreadContext32"},
{0x34, SvcWrap32<WaitForAddress32>, "WaitForAddress32"},
{0x35, SvcWrap32<SignalToAddress32>, "SignalToAddress32"},
{0x36, SvcWrap32<SynchronizePreemptionState>, "SynchronizePreemptionState32"},
- {0x37, nullptr, "Unknown"},
- {0x38, nullptr, "Unknown"},
- {0x39, nullptr, "Unknown"},
- {0x3a, nullptr, "Unknown"},
- {0x3b, nullptr, "Unknown"},
- {0x3c, nullptr, "Unknown"},
- {0x3d, nullptr, "Unknown"},
- {0x3e, nullptr, "Unknown"},
- {0x3f, nullptr, "Unknown"},
+ {0x37, nullptr, "GetResourceLimitPeakValue32"},
+ {0x38, nullptr, "Unknown38"},
+ {0x39, nullptr, "CreateIoPool32"},
+ {0x3a, nullptr, "CreateIoRegion32"},
+ {0x3b, nullptr, "Unknown3b"},
+ {0x3c, nullptr, "KernelDebug32"},
+ {0x3d, nullptr, "ChangeKernelTraceState32"},
+ {0x3e, nullptr, "Unknown3e"},
+ {0x3f, nullptr, "Unknown3f"},
{0x40, nullptr, "CreateSession32"},
{0x41, nullptr, "AcceptSession32"},
- {0x42, nullptr, "Unknown"},
+ {0x42, nullptr, "ReplyAndReceiveLight32"},
{0x43, nullptr, "ReplyAndReceive32"},
- {0x44, nullptr, "Unknown"},
+ {0x44, nullptr, "ReplyAndReceiveWithUserBuffer32"},
{0x45, SvcWrap32<CreateEvent32>, "CreateEvent32"},
- {0x46, nullptr, "Unknown"},
- {0x47, nullptr, "Unknown"},
- {0x48, nullptr, "Unknown"},
- {0x49, nullptr, "Unknown"},
- {0x4a, nullptr, "Unknown"},
- {0x4b, nullptr, "Unknown"},
- {0x4c, nullptr, "Unknown"},
- {0x4d, nullptr, "Unknown"},
- {0x4e, nullptr, "Unknown"},
- {0x4f, nullptr, "Unknown"},
- {0x50, nullptr, "Unknown"},
- {0x51, nullptr, "Unknown"},
- {0x52, nullptr, "Unknown"},
- {0x53, nullptr, "Unknown"},
- {0x54, nullptr, "Unknown"},
- {0x55, nullptr, "Unknown"},
- {0x56, nullptr, "Unknown"},
- {0x57, nullptr, "Unknown"},
- {0x58, nullptr, "Unknown"},
- {0x59, nullptr, "Unknown"},
- {0x5a, nullptr, "Unknown"},
- {0x5b, nullptr, "Unknown"},
- {0x5c, nullptr, "Unknown"},
- {0x5d, nullptr, "Unknown"},
- {0x5e, nullptr, "Unknown"},
+ {0x46, nullptr, "MapIoRegion32"},
+ {0x47, nullptr, "UnmapIoRegion32"},
+ {0x48, nullptr, "MapPhysicalMemoryUnsafe32"},
+ {0x49, nullptr, "UnmapPhysicalMemoryUnsafe32"},
+ {0x4a, nullptr, "SetUnsafeLimit32"},
+ {0x4b, SvcWrap32<CreateCodeMemory32>, "CreateCodeMemory32"},
+ {0x4c, SvcWrap32<ControlCodeMemory32>, "ControlCodeMemory32"},
+ {0x4d, nullptr, "SleepSystem32"},
+ {0x4e, nullptr, "ReadWriteRegister32"},
+ {0x4f, nullptr, "SetProcessActivity32"},
+ {0x50, nullptr, "CreateSharedMemory32"},
+ {0x51, nullptr, "MapTransferMemory32"},
+ {0x52, nullptr, "UnmapTransferMemory32"},
+ {0x53, nullptr, "CreateInterruptEvent32"},
+ {0x54, nullptr, "QueryPhysicalAddress32"},
+ {0x55, nullptr, "QueryIoMapping32"},
+ {0x56, nullptr, "CreateDeviceAddressSpace32"},
+ {0x57, nullptr, "AttachDeviceAddressSpace32"},
+ {0x58, nullptr, "DetachDeviceAddressSpace32"},
+ {0x59, nullptr, "MapDeviceAddressSpaceByForce32"},
+ {0x5a, nullptr, "MapDeviceAddressSpaceAligned32"},
+ {0x5b, nullptr, "MapDeviceAddressSpace32"},
+ {0x5c, nullptr, "UnmapDeviceAddressSpace32"},
+ {0x5d, nullptr, "InvalidateProcessDataCache32"},
+ {0x5e, nullptr, "StoreProcessDataCache32"},
{0x5F, SvcWrap32<FlushProcessDataCache32>, "FlushProcessDataCache32"},
- {0x60, nullptr, "Unknown"},
- {0x61, nullptr, "Unknown"},
- {0x62, nullptr, "Unknown"},
- {0x63, nullptr, "Unknown"},
- {0x64, nullptr, "Unknown"},
+ {0x60, nullptr, "StoreProcessDataCache32"},
+ {0x61, nullptr, "BreakDebugProcess32"},
+ {0x62, nullptr, "TerminateDebugProcess32"},
+ {0x63, nullptr, "GetDebugEvent32"},
+ {0x64, nullptr, "ContinueDebugEvent32"},
{0x65, nullptr, "GetProcessList32"},
- {0x66, nullptr, "Unknown"},
- {0x67, nullptr, "Unknown"},
- {0x68, nullptr, "Unknown"},
- {0x69, nullptr, "Unknown"},
- {0x6A, nullptr, "Unknown"},
- {0x6B, nullptr, "Unknown"},
- {0x6C, nullptr, "Unknown"},
- {0x6D, nullptr, "Unknown"},
- {0x6E, nullptr, "Unknown"},
+ {0x66, nullptr, "GetThreadList"},
+ {0x67, nullptr, "GetDebugThreadContext32"},
+ {0x68, nullptr, "SetDebugThreadContext32"},
+ {0x69, nullptr, "QueryDebugProcessMemory32"},
+ {0x6A, nullptr, "ReadDebugProcessMemory32"},
+ {0x6B, nullptr, "WriteDebugProcessMemory32"},
+ {0x6C, nullptr, "SetHardwareBreakPoint32"},
+ {0x6D, nullptr, "GetDebugThreadParam32"},
+ {0x6E, nullptr, "Unknown6E"},
{0x6f, nullptr, "GetSystemInfo32"},
{0x70, nullptr, "CreatePort32"},
{0x71, nullptr, "ManageNamedPort32"},
{0x72, nullptr, "ConnectToPort32"},
{0x73, nullptr, "SetProcessMemoryPermission32"},
- {0x74, nullptr, "Unknown"},
- {0x75, nullptr, "Unknown"},
- {0x76, nullptr, "Unknown"},
+ {0x74, nullptr, "MapProcessMemory32"},
+ {0x75, nullptr, "UnmapProcessMemory32"},
+ {0x76, nullptr, "QueryProcessMemory32"},
{0x77, nullptr, "MapProcessCodeMemory32"},
{0x78, nullptr, "UnmapProcessCodeMemory32"},
- {0x79, nullptr, "Unknown"},
- {0x7A, nullptr, "Unknown"},
+ {0x79, nullptr, "CreateProcess32"},
+ {0x7A, nullptr, "StartProcess32"},
{0x7B, nullptr, "TerminateProcess32"},
{0x7C, nullptr, "GetProcessInfo32"},
{0x7D, nullptr, "CreateResourceLimit32"},
@@ -2754,7 +2768,7 @@ static const FunctionDef SVC_Table_32[] = {
};
static const FunctionDef SVC_Table_64[] = {
- {0x00, nullptr, "Unknown"},
+ {0x00, nullptr, "Unknown0"},
{0x01, SvcWrap64<SetHeapSize>, "SetHeapSize"},
{0x02, SvcWrap64<SetMemoryPermission>, "SetMemoryPermission"},
{0x03, SvcWrap64<SetMemoryAttribute>, "SetMemoryAttribute"},
@@ -2809,23 +2823,23 @@ static const FunctionDef SVC_Table_64[] = {
{0x34, SvcWrap64<WaitForAddress>, "WaitForAddress"},
{0x35, SvcWrap64<SignalToAddress>, "SignalToAddress"},
{0x36, SvcWrap64<SynchronizePreemptionState>, "SynchronizePreemptionState"},
- {0x37, nullptr, "Unknown"},
- {0x38, nullptr, "Unknown"},
- {0x39, nullptr, "Unknown"},
- {0x3A, nullptr, "Unknown"},
- {0x3B, nullptr, "Unknown"},
+ {0x37, nullptr, "GetResourceLimitPeakValue"},
+ {0x38, nullptr, "Unknown38"},
+ {0x39, nullptr, "CreateIoPool"},
+ {0x3A, nullptr, "CreateIoRegion"},
+ {0x3B, nullptr, "Unknown3B"},
{0x3C, SvcWrap64<KernelDebug>, "KernelDebug"},
{0x3D, SvcWrap64<ChangeKernelTraceState>, "ChangeKernelTraceState"},
- {0x3E, nullptr, "Unknown"},
- {0x3F, nullptr, "Unknown"},
+ {0x3E, nullptr, "Unknown3e"},
+ {0x3F, nullptr, "Unknown3f"},
{0x40, nullptr, "CreateSession"},
{0x41, nullptr, "AcceptSession"},
{0x42, nullptr, "ReplyAndReceiveLight"},
{0x43, nullptr, "ReplyAndReceive"},
{0x44, nullptr, "ReplyAndReceiveWithUserBuffer"},
{0x45, SvcWrap64<CreateEvent>, "CreateEvent"},
- {0x46, nullptr, "Unknown"},
- {0x47, nullptr, "Unknown"},
+ {0x46, nullptr, "MapIoRegion"},
+ {0x47, nullptr, "UnmapIoRegion"},
{0x48, nullptr, "MapPhysicalMemoryUnsafe"},
{0x49, nullptr, "UnmapPhysicalMemoryUnsafe"},
{0x4A, nullptr, "SetUnsafeLimit"},
@@ -2864,7 +2878,7 @@ static const FunctionDef SVC_Table_64[] = {
{0x6B, nullptr, "WriteDebugProcessMemory"},
{0x6C, nullptr, "SetHardwareBreakPoint"},
{0x6D, nullptr, "GetDebugThreadParam"},
- {0x6E, nullptr, "Unknown"},
+ {0x6E, nullptr, "Unknown6E"},
{0x6F, nullptr, "GetSystemInfo"},
{0x70, nullptr, "CreatePort"},
{0x71, nullptr, "ManageNamedPort"},
diff --git a/src/core/hle/kernel/svc_types.h b/src/core/hle/kernel/svc_types.h
index 365e22e4e..b2e9ec092 100644
--- a/src/core/hle/kernel/svc_types.h
+++ b/src/core/hle/kernel/svc_types.h
@@ -96,4 +96,6 @@ constexpr inline s32 IdealCoreNoUpdate = -3;
constexpr inline s32 LowestThreadPriority = 63;
constexpr inline s32 HighestThreadPriority = 0;
+constexpr inline size_t ThreadLocalRegionSize = 0x200;
+
} // namespace Kernel::Svc
diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h
index a60adfcab..d309f166c 100644
--- a/src/core/hle/kernel/svc_wrap.h
+++ b/src/core/hle/kernel/svc_wrap.h
@@ -669,4 +669,26 @@ void SvcWrap32(Core::System& system) {
FuncReturn(system, retval);
}
+// Used by CreateCodeMemory32
+template <ResultCode func(Core::System&, Handle*, u32, u32)>
+void SvcWrap32(Core::System& system) {
+ Handle handle = 0;
+
+ const u32 retval = func(system, &handle, Param32(system, 1), Param32(system, 2)).raw;
+
+ system.CurrentArmInterface().SetReg(1, handle);
+ FuncReturn(system, retval);
+}
+
+// Used by ControlCodeMemory32
+template <ResultCode func(Core::System&, Handle, u32, u64, u64, Svc::MemoryPermission)>
+void SvcWrap32(Core::System& system) {
+ const u32 retval =
+ func(system, Param32(system, 0), Param32(system, 1), Param(system, 2), Param(system, 4),
+ static_cast<Svc::MemoryPermission>(Param32(system, 6)))
+ .raw;
+
+ FuncReturn(system, retval);
+}
+
} // namespace Kernel
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 6e63e057e..e34ef5a78 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -39,9 +39,9 @@ constexpr ResultCode ERR_FAILED_SAVE_DATA{ErrorModule::Account, 100};
// Thumbnails are hard coded to be at least this size
constexpr std::size_t THUMBNAIL_SIZE = 0x24000;
-static std::filesystem::path GetImagePath(Common::UUID uuid) {
+static std::filesystem::path GetImagePath(const Common::UUID& uuid) {
return Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
- fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormatSwitch());
+ fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
}
static constexpr u32 SanitizeJPEGSize(std::size_t size) {
@@ -290,7 +290,7 @@ public:
protected:
void Get(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.Format());
+ LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
ProfileBase profile_base{};
ProfileData data{};
if (profile_manager.GetProfileBaseAndData(user_id, profile_base, data)) {
@@ -300,21 +300,21 @@ protected:
rb.PushRaw(profile_base);
} else {
LOG_ERROR(Service_ACC, "Failed to get profile base and data for user=0x{}",
- user_id.Format());
+ user_id.RawString());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultUnknown); // TODO(ogniK): Get actual error code
}
}
void GetBase(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.Format());
+ LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
ProfileBase profile_base{};
if (profile_manager.GetProfileBase(user_id, profile_base)) {
IPC::ResponseBuilder rb{ctx, 16};
rb.Push(ResultSuccess);
rb.PushRaw(profile_base);
} else {
- LOG_ERROR(Service_ACC, "Failed to get profile base for user=0x{}", user_id.Format());
+ LOG_ERROR(Service_ACC, "Failed to get profile base for user=0x{}", user_id.RawString());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultUnknown); // TODO(ogniK): Get actual error code
}
@@ -373,7 +373,7 @@ protected:
LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}",
Common::StringFromFixedZeroTerminatedBuffer(
reinterpret_cast<const char*>(base.username.data()), base.username.size()),
- base.timestamp, base.user_uuid.Format());
+ base.timestamp, base.user_uuid.RawString());
if (user_data.size() < sizeof(ProfileData)) {
LOG_ERROR(Service_ACC, "ProfileData buffer too small!");
@@ -406,7 +406,7 @@ protected:
LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}",
Common::StringFromFixedZeroTerminatedBuffer(
reinterpret_cast<const char*>(base.username.data()), base.username.size()),
- base.timestamp, base.user_uuid.Format());
+ base.timestamp, base.user_uuid.RawString());
if (user_data.size() < sizeof(ProfileData)) {
LOG_ERROR(Service_ACC, "ProfileData buffer too small!");
@@ -435,7 +435,7 @@ protected:
}
ProfileManager& profile_manager;
- Common::UUID user_id{Common::INVALID_UUID}; ///< The user id this profile refers to.
+ Common::UUID user_id{}; ///< The user id this profile refers to.
};
class IProfile final : public IProfileCommon {
@@ -547,7 +547,7 @@ private:
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(ResultSuccess);
- rb.PushRaw<u64>(user_id.GetNintendoID());
+ rb.PushRaw<u64>(user_id.Hash());
}
void EnsureIdTokenCacheAsync(Kernel::HLERequestContext& ctx) {
@@ -577,7 +577,7 @@ private:
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(ResultSuccess);
- rb.PushRaw<u64>(user_id.GetNintendoID());
+ rb.PushRaw<u64>(user_id.Hash());
}
void StoreOpenContext(Kernel::HLERequestContext& ctx) {
@@ -587,7 +587,7 @@ private:
}
std::shared_ptr<EnsureTokenIdCacheAsyncInterface> ensure_token_id{};
- Common::UUID user_id{Common::INVALID_UUID};
+ Common::UUID user_id{};
};
// 6.0.0+
@@ -687,7 +687,7 @@ void Module::Interface::GetUserCount(Kernel::HLERequestContext& ctx) {
void Module::Interface::GetUserExistence(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
Common::UUID user_id = rp.PopRaw<Common::UUID>();
- LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.Format());
+ LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
@@ -718,7 +718,7 @@ void Module::Interface::GetLastOpenedUser(Kernel::HLERequestContext& ctx) {
void Module::Interface::GetProfile(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
Common::UUID user_id = rp.PopRaw<Common::UUID>();
- LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.Format());
+ LOG_DEBUG(Service_ACC, "called user_id=0x{}", user_id.RawString());
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
@@ -833,7 +833,7 @@ void Module::Interface::GetProfileEditor(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
Common::UUID user_id = rp.PopRaw<Common::UUID>();
- LOG_DEBUG(Service_ACC, "called, user_id=0x{}", user_id.Format());
+ LOG_DEBUG(Service_ACC, "called, user_id=0x{}", user_id.RawString());
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
@@ -875,7 +875,7 @@ void Module::Interface::StoreSaveDataThumbnailApplication(Kernel::HLERequestCont
IPC::RequestParser rp{ctx};
const auto uuid = rp.PopRaw<Common::UUID>();
- LOG_WARNING(Service_ACC, "(STUBBED) called, uuid=0x{}", uuid.Format());
+ LOG_WARNING(Service_ACC, "(STUBBED) called, uuid=0x{}", uuid.RawString());
// TODO(ogniK): Check if application ID is zero on acc initialize. As we don't have a reliable
// way of confirming things like the TID, we're going to assume a non zero value for the time
@@ -889,7 +889,7 @@ void Module::Interface::StoreSaveDataThumbnailSystem(Kernel::HLERequestContext&
const auto uuid = rp.PopRaw<Common::UUID>();
const auto tid = rp.Pop<u64_le>();
- LOG_WARNING(Service_ACC, "(STUBBED) called, uuid=0x{}, tid={:016X}", uuid.Format(), tid);
+ LOG_WARNING(Service_ACC, "(STUBBED) called, uuid=0x{}, tid={:016X}", uuid.RawString(), tid);
StoreSaveDataThumbnail(ctx, uuid, tid);
}
@@ -903,7 +903,7 @@ void Module::Interface::StoreSaveDataThumbnail(Kernel::HLERequestContext& ctx,
return;
}
- if (!uuid) {
+ if (uuid.IsInvalid()) {
LOG_ERROR(Service_ACC, "User ID is not valid!");
rb.Push(ERR_INVALID_USER_ID);
return;
@@ -927,20 +927,20 @@ void Module::Interface::TrySelectUserWithoutInteraction(Kernel::HLERequestContex
IPC::ResponseBuilder rb{ctx, 6};
if (profile_manager->GetUserCount() != 1) {
rb.Push(ResultSuccess);
- rb.PushRaw<u128>(Common::INVALID_UUID);
+ rb.PushRaw(Common::InvalidUUID);
return;
}
const auto user_list = profile_manager->GetAllUsers();
if (std::ranges::all_of(user_list, [](const auto& user) { return user.IsInvalid(); })) {
rb.Push(ResultUnknown); // TODO(ogniK): Find the correct error code
- rb.PushRaw<u128>(Common::INVALID_UUID);
+ rb.PushRaw(Common::InvalidUUID);
return;
}
// Select the first user we have
rb.Push(ResultSuccess);
- rb.PushRaw<u128>(profile_manager->GetUser(0)->uuid);
+ rb.PushRaw(profile_manager->GetUser(0)->uuid);
}
Module::Interface::Interface(std::shared_ptr<Module> module_,
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp
index 568303ced..fba847142 100644
--- a/src/core/hle/service/acc/profile_manager.cpp
+++ b/src/core/hle/service/acc/profile_manager.cpp
@@ -19,8 +19,8 @@ namespace FS = Common::FS;
using Common::UUID;
struct UserRaw {
- UUID uuid{Common::INVALID_UUID};
- UUID uuid2{Common::INVALID_UUID};
+ UUID uuid{};
+ UUID uuid2{};
u64 timestamp{};
ProfileUsername username{};
ProfileData extra_data{};
@@ -45,7 +45,7 @@ ProfileManager::ProfileManager() {
// Create an user if none are present
if (user_count == 0) {
- CreateNewUser(UUID::Generate(), "yuzu");
+ CreateNewUser(UUID::MakeRandom(), "yuzu");
}
auto current =
@@ -101,7 +101,7 @@ ResultCode ProfileManager::CreateNewUser(UUID uuid, const ProfileUsername& usern
if (user_count == MAX_USERS) {
return ERROR_TOO_MANY_USERS;
}
- if (!uuid) {
+ if (uuid.IsInvalid()) {
return ERROR_ARGUMENT_IS_NULL;
}
if (username[0] == 0x0) {
@@ -145,7 +145,7 @@ std::optional<UUID> ProfileManager::GetUser(std::size_t index) const {
/// Returns a users profile index based on their user id.
std::optional<std::size_t> ProfileManager::GetUserIndex(const UUID& uuid) const {
- if (!uuid) {
+ if (uuid.IsInvalid()) {
return std::nullopt;
}
@@ -250,9 +250,10 @@ UserIDArray ProfileManager::GetOpenUsers() const {
std::ranges::transform(profiles, output.begin(), [](const ProfileInfo& p) {
if (p.is_open)
return p.user_uuid;
- return UUID{Common::INVALID_UUID};
+ return Common::InvalidUUID;
});
- std::stable_partition(output.begin(), output.end(), [](const UUID& uuid) { return uuid; });
+ std::stable_partition(output.begin(), output.end(),
+ [](const UUID& uuid) { return uuid.IsValid(); });
return output;
}
@@ -299,7 +300,7 @@ bool ProfileManager::RemoveUser(UUID uuid) {
profiles[*index] = ProfileInfo{};
std::stable_partition(profiles.begin(), profiles.end(),
- [](const ProfileInfo& profile) { return profile.user_uuid; });
+ [](const ProfileInfo& profile) { return profile.user_uuid.IsValid(); });
return true;
}
@@ -361,7 +362,7 @@ void ProfileManager::ParseUserSaveFile() {
}
std::stable_partition(profiles.begin(), profiles.end(),
- [](const ProfileInfo& profile) { return profile.user_uuid; });
+ [](const ProfileInfo& profile) { return profile.user_uuid.IsValid(); });
}
void ProfileManager::WriteUserSaveFile() {
diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h
index 71b9d5518..17347f7ef 100644
--- a/src/core/hle/service/acc/profile_manager.h
+++ b/src/core/hle/service/acc/profile_manager.h
@@ -35,7 +35,7 @@ static_assert(sizeof(ProfileData) == 0x80, "ProfileData structure has incorrect
/// This holds general information about a users profile. This is where we store all the information
/// based on a specific user
struct ProfileInfo {
- Common::UUID user_uuid{Common::INVALID_UUID};
+ Common::UUID user_uuid{};
ProfileUsername username{};
u64 creation_time{};
ProfileData data{}; // TODO(ognik): Work out what this is
@@ -49,7 +49,7 @@ struct ProfileBase {
// Zero out all the fields to make the profile slot considered "Empty"
void Invalidate() {
- user_uuid.Invalidate();
+ user_uuid = {};
timestamp = 0;
username.fill(0);
}
@@ -103,7 +103,7 @@ private:
std::array<ProfileInfo, MAX_USERS> profiles{};
std::size_t user_count{};
- Common::UUID last_opened_user{Common::INVALID_UUID};
+ Common::UUID last_opened_user{};
};
}; // namespace Service::Account
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index e60661fe1..420de3c54 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -55,7 +55,7 @@ constexpr u32 LAUNCH_PARAMETER_ACCOUNT_PRESELECTED_USER_MAGIC = 0xC79497CA;
struct LaunchParameterAccountPreselectedUser {
u32_le magic;
u32_le is_account_selected;
- u128 current_user;
+ Common::UUID current_user;
INSERT_PADDING_BYTES(0x70);
};
static_assert(sizeof(LaunchParameterAccountPreselectedUser) == 0x88);
@@ -618,7 +618,7 @@ void AppletMessageQueue::PushMessage(AppletMessage msg) {
AppletMessageQueue::AppletMessage AppletMessageQueue::PopMessage() {
if (messages.empty()) {
on_new_message->GetWritableEvent().Clear();
- return AppletMessage::NoMessage;
+ return AppletMessage::None;
}
auto msg = messages.front();
messages.pop();
@@ -633,7 +633,7 @@ std::size_t AppletMessageQueue::GetMessageCount() const {
}
void AppletMessageQueue::RequestExit() {
- PushMessage(AppletMessage::ExitRequested);
+ PushMessage(AppletMessage::Exit);
}
void AppletMessageQueue::FocusStateChanged() {
@@ -732,7 +732,7 @@ void ICommonStateGetter::ReceiveMessage(Kernel::HLERequestContext& ctx) {
const auto message = msg_queue->PopMessage();
IPC::ResponseBuilder rb{ctx, 3};
- if (message == AppletMessageQueue::AppletMessage::NoMessage) {
+ if (message == AppletMessageQueue::AppletMessage::None) {
LOG_ERROR(Service_AM, "Message queue is empty");
rb.Push(ERR_NO_MESSAGES);
rb.PushEnum<AppletMessageQueue::AppletMessage>(message);
@@ -980,7 +980,7 @@ private:
LOG_DEBUG(Service_AM, "called");
IPC::RequestParser rp{ctx};
- applet->GetBroker().PushNormalDataFromGame(rp.PopIpcInterface<IStorage>());
+ applet->GetBroker().PushNormalDataFromGame(rp.PopIpcInterface<IStorage>().lock());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -1007,7 +1007,7 @@ private:
LOG_DEBUG(Service_AM, "called");
IPC::RequestParser rp{ctx};
- applet->GetBroker().PushInteractiveDataFromGame(rp.PopIpcInterface<IStorage>());
+ applet->GetBroker().PushInteractiveDataFromGame(rp.PopIpcInterface<IStorage>().lock());
ASSERT(applet->IsInitialized());
applet->ExecuteInteractive();
@@ -1453,8 +1453,8 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) {
Account::ProfileManager profile_manager{};
const auto uuid = profile_manager.GetUser(static_cast<s32>(Settings::values.current_user));
- ASSERT(uuid);
- params.current_user = uuid->uuid;
+ ASSERT(uuid.has_value() && uuid->IsValid());
+ params.current_user = *uuid;
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index 2a578aea5..fdd937b82 100644
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -22,6 +22,7 @@ class NVFlinger;
namespace Service::AM {
+// This is nn::settings::Language
enum SystemLanguage {
Japanese = 0,
English = 1, // en-US
@@ -41,16 +42,44 @@ enum SystemLanguage {
// 4.0.0+
SimplifiedChinese = 15,
TraditionalChinese = 16,
+ // 10.1.0+
+ BrazilianPortuguese = 17,
};
class AppletMessageQueue {
public:
+ // This is nn::am::AppletMessage
enum class AppletMessage : u32 {
- NoMessage = 0,
- ExitRequested = 4,
+ None = 0,
+ ChangeIntoForeground = 1,
+ ChangeIntoBackground = 2,
+ Exit = 4,
+ ApplicationExited = 6,
FocusStateChanged = 15,
+ Resume = 16,
+ DetectShortPressingHomeButton = 20,
+ DetectLongPressingHomeButton = 21,
+ DetectShortPressingPowerButton = 22,
+ DetectMiddlePressingPowerButton = 23,
+ DetectLongPressingPowerButton = 24,
+ RequestToPrepareSleep = 25,
+ FinishedSleepSequence = 26,
+ SleepRequiredByHighTemperature = 27,
+ SleepRequiredByLowBattery = 28,
+ AutoPowerDown = 29,
OperationModeChanged = 30,
PerformanceModeChanged = 31,
+ DetectReceivingCecSystemStandby = 32,
+ SdCardRemoved = 33,
+ LaunchApplicationRequested = 50,
+ RequestToDisplay = 51,
+ ShowApplicationLogo = 55,
+ HideApplicationLogo = 56,
+ ForceHideApplicationLogo = 57,
+ FloatingApplicationDetected = 60,
+ DetectShortPressingCaptureButton = 90,
+ AlbumScreenShotTaken = 92,
+ AlbumRecordingSaved = 93,
};
explicit AppletMessageQueue(Core::System& system);
@@ -179,11 +208,14 @@ public:
~ICommonStateGetter() override;
private:
+ // This is nn::oe::FocusState
enum class FocusState : u8 {
InFocus = 1,
NotInFocus = 2,
+ Background = 3,
};
+ // This is nn::oe::OperationMode
enum class OperationMode : u8 {
Handheld = 0,
Docked = 1,
diff --git a/src/core/hle/service/am/applets/applet_mii.cpp b/src/core/hle/service/am/applets/applet_mii.cpp
new file mode 100644
index 000000000..8c4173737
--- /dev/null
+++ b/src/core/hle/service/am/applets/applet_mii.cpp
@@ -0,0 +1,101 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/assert.h"
+#include "common/logging/log.h"
+#include "core/core.h"
+#include "core/frontend/applets/mii.h"
+#include "core/hle/service/am/am.h"
+#include "core/hle/service/am/applets/applet_mii.h"
+#include "core/reporter.h"
+
+namespace Service::AM::Applets {
+
+Mii::Mii(Core::System& system_, LibraryAppletMode applet_mode_,
+ const Core::Frontend::MiiApplet& frontend_)
+ : Applet{system_, applet_mode_}, frontend{frontend_}, system{system_} {}
+
+Mii::~Mii() = default;
+
+void Mii::Initialize() {
+ is_complete = false;
+
+ const auto storage = broker.PopNormalDataToApplet();
+ ASSERT(storage != nullptr);
+
+ const auto data = storage->GetData();
+ ASSERT(data.size() == sizeof(MiiAppletInput));
+
+ std::memcpy(&input_data, data.data(), sizeof(MiiAppletInput));
+}
+
+bool Mii::TransactionComplete() const {
+ return is_complete;
+}
+
+ResultCode Mii::GetStatus() const {
+ return ResultSuccess;
+}
+
+void Mii::ExecuteInteractive() {
+ UNREACHABLE_MSG("Unexpected interactive applet data!");
+}
+
+void Mii::Execute() {
+ if (is_complete) {
+ return;
+ }
+
+ const auto callback = [this](const Core::Frontend::MiiParameters& parameters) {
+ DisplayCompleted(parameters);
+ };
+
+ switch (input_data.applet_mode) {
+ case MiiAppletMode::ShowMiiEdit: {
+ Service::Mii::MiiManager manager;
+ Core::Frontend::MiiParameters params{
+ .is_editable = false,
+ .mii_data = input_data.mii_char_info.mii_data,
+ };
+ frontend.ShowMii(params, callback);
+ break;
+ }
+ case MiiAppletMode::EditMii: {
+ Service::Mii::MiiManager manager;
+ Core::Frontend::MiiParameters params{
+ .is_editable = true,
+ .mii_data = input_data.mii_char_info.mii_data,
+ };
+ frontend.ShowMii(params, callback);
+ break;
+ }
+ case MiiAppletMode::CreateMii: {
+ Service::Mii::MiiManager manager;
+ Core::Frontend::MiiParameters params{
+ .is_editable = true,
+ .mii_data = manager.BuildDefault(0),
+ };
+ frontend.ShowMii(params, callback);
+ break;
+ }
+ default:
+ UNIMPLEMENTED_MSG("Unimplemented LibAppletMiiEdit mode={:02X}!", input_data.applet_mode);
+ }
+}
+
+void Mii::DisplayCompleted(const Core::Frontend::MiiParameters& parameters) {
+ is_complete = true;
+
+ std::vector<u8> reply(sizeof(AppletOutputForCharInfoEditing));
+ output_data = {
+ .result = ResultSuccess,
+ .mii_data = parameters.mii_data,
+ };
+
+ std::memcpy(reply.data(), &output_data, sizeof(AppletOutputForCharInfoEditing));
+ broker.PushNormalDataFromApplet(std::make_shared<IStorage>(system, std::move(reply)));
+ broker.SignalStateChanged();
+}
+
+} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_mii.h b/src/core/hle/service/am/applets/applet_mii.h
new file mode 100644
index 000000000..42326bfc2
--- /dev/null
+++ b/src/core/hle/service/am/applets/applet_mii.h
@@ -0,0 +1,90 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <array>
+
+#include "core/hle/result.h"
+#include "core/hle/service/am/applets/applets.h"
+#include "core/hle/service/mii/mii_manager.h"
+
+namespace Core {
+class System;
+}
+
+namespace Service::AM::Applets {
+
+// This is nn::mii::AppletMode
+enum class MiiAppletMode : u32 {
+ ShowMiiEdit = 0,
+ AppendMii = 1,
+ AppendMiiImage = 2,
+ UpdateMiiImage = 3,
+ CreateMii = 4,
+ EditMii = 5,
+};
+
+struct MiiCharInfo {
+ Service::Mii::MiiInfo mii_data{};
+ INSERT_PADDING_BYTES(0x28);
+};
+static_assert(sizeof(MiiCharInfo) == 0x80, "MiiCharInfo has incorrect size.");
+
+// This is nn::mii::AppletInput
+struct MiiAppletInput {
+ s32 version{};
+ MiiAppletMode applet_mode{};
+ u32 special_mii_key_code{};
+ union {
+ std::array<Common::UUID, 8> valid_uuid;
+ MiiCharInfo mii_char_info;
+ };
+ Common::UUID used_uuid;
+ INSERT_PADDING_BYTES(0x64);
+};
+static_assert(sizeof(MiiAppletInput) == 0x100, "MiiAppletInput has incorrect size.");
+
+// This is nn::mii::AppletOutput
+struct MiiAppletOutput {
+ ResultCode result{ResultSuccess};
+ s32 index{};
+ INSERT_PADDING_BYTES(0x18);
+};
+static_assert(sizeof(MiiAppletOutput) == 0x20, "MiiAppletOutput has incorrect size.");
+
+// This is nn::mii::AppletOutputForCharInfoEditing
+struct AppletOutputForCharInfoEditing {
+ ResultCode result{ResultSuccess};
+ Service::Mii::MiiInfo mii_data{};
+ INSERT_PADDING_BYTES(0x24);
+};
+static_assert(sizeof(AppletOutputForCharInfoEditing) == 0x80,
+ "AppletOutputForCharInfoEditing has incorrect size.");
+
+class Mii final : public Applet {
+public:
+ explicit Mii(Core::System& system_, LibraryAppletMode applet_mode_,
+ const Core::Frontend::MiiApplet& frontend_);
+ ~Mii() override;
+
+ void Initialize() override;
+
+ bool TransactionComplete() const override;
+ ResultCode GetStatus() const override;
+ void ExecuteInteractive() override;
+ void Execute() override;
+
+ void DisplayCompleted(const Core::Frontend::MiiParameters& parameters);
+
+private:
+ const Core::Frontend::MiiApplet& frontend;
+ MiiAppletInput input_data{};
+ AppletOutputForCharInfoEditing output_data{};
+
+ bool is_complete = false;
+ Core::System& system;
+};
+
+} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_profile_select.cpp b/src/core/hle/service/am/applets/applet_profile_select.cpp
index a6e891944..82500e121 100644
--- a/src/core/hle/service/am/applets/applet_profile_select.cpp
+++ b/src/core/hle/service/am/applets/applet_profile_select.cpp
@@ -62,11 +62,11 @@ void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) {
if (uuid.has_value() && uuid->IsValid()) {
output.result = 0;
- output.uuid_selected = uuid->uuid;
+ output.uuid_selected = *uuid;
} else {
status = ERR_USER_CANCELLED_SELECTION;
output.result = ERR_USER_CANCELLED_SELECTION.raw;
- output.uuid_selected = Common::INVALID_UUID;
+ output.uuid_selected = Common::InvalidUUID;
}
final_data = std::vector<u8>(sizeof(UserSelectionOutput));
diff --git a/src/core/hle/service/am/applets/applet_profile_select.h b/src/core/hle/service/am/applets/applet_profile_select.h
index 8fb76e6c4..852e1e0c0 100644
--- a/src/core/hle/service/am/applets/applet_profile_select.h
+++ b/src/core/hle/service/am/applets/applet_profile_select.h
@@ -27,7 +27,7 @@ static_assert(sizeof(UserSelectionConfig) == 0xA0, "UserSelectionConfig has inco
struct UserSelectionOutput {
u64 result;
- u128 uuid_selected;
+ Common::UUID uuid_selected;
};
static_assert(sizeof(UserSelectionOutput) == 0x18, "UserSelectionOutput has incorrect size.");
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp
index 134ac1ee2..79e62679d 100644
--- a/src/core/hle/service/am/applets/applets.cpp
+++ b/src/core/hle/service/am/applets/applets.cpp
@@ -9,6 +9,7 @@
#include "core/frontend/applets/controller.h"
#include "core/frontend/applets/error.h"
#include "core/frontend/applets/general_frontend.h"
+#include "core/frontend/applets/mii.h"
#include "core/frontend/applets/profile_select.h"
#include "core/frontend/applets/software_keyboard.h"
#include "core/frontend/applets/web_browser.h"
@@ -19,6 +20,7 @@
#include "core/hle/service/am/applets/applet_controller.h"
#include "core/hle/service/am/applets/applet_error.h"
#include "core/hle/service/am/applets/applet_general_backend.h"
+#include "core/hle/service/am/applets/applet_mii.h"
#include "core/hle/service/am/applets/applet_profile_select.h"
#include "core/hle/service/am/applets/applet_software_keyboard.h"
#include "core/hle/service/am/applets/applet_web_browser.h"
@@ -172,10 +174,11 @@ AppletFrontendSet::AppletFrontendSet() = default;
AppletFrontendSet::AppletFrontendSet(ControllerApplet controller_applet, ErrorApplet error_applet,
ParentalControlsApplet parental_controls_applet,
- PhotoViewer photo_viewer_, ProfileSelect profile_select_,
+ MiiApplet mii_applet, PhotoViewer photo_viewer_,
+ ProfileSelect profile_select_,
SoftwareKeyboard software_keyboard_, WebBrowser web_browser_)
: controller{std::move(controller_applet)}, error{std::move(error_applet)},
- parental_controls{std::move(parental_controls_applet)},
+ parental_controls{std::move(parental_controls_applet)}, mii{std::move(mii_applet)},
photo_viewer{std::move(photo_viewer_)}, profile_select{std::move(profile_select_)},
software_keyboard{std::move(software_keyboard_)}, web_browser{std::move(web_browser_)} {}
@@ -206,6 +209,10 @@ void AppletManager::SetAppletFrontendSet(AppletFrontendSet set) {
frontend.parental_controls = std::move(set.parental_controls);
}
+ if (set.mii != nullptr) {
+ frontend.mii = std::move(set.mii);
+ }
+
if (set.photo_viewer != nullptr) {
frontend.photo_viewer = std::move(set.photo_viewer);
}
@@ -243,6 +250,10 @@ void AppletManager::SetDefaultAppletsIfMissing() {
std::make_unique<Core::Frontend::DefaultParentalControlsApplet>();
}
+ if (frontend.mii == nullptr) {
+ frontend.mii = std::make_unique<Core::Frontend::DefaultMiiApplet>();
+ }
+
if (frontend.photo_viewer == nullptr) {
frontend.photo_viewer = std::make_unique<Core::Frontend::DefaultPhotoViewerApplet>();
}
@@ -277,6 +288,8 @@ std::shared_ptr<Applet> AppletManager::GetApplet(AppletId id, LibraryAppletMode
return std::make_shared<ProfileSelect>(system, mode, *frontend.profile_select);
case AppletId::SoftwareKeyboard:
return std::make_shared<SoftwareKeyboard>(system, mode, *frontend.software_keyboard);
+ case AppletId::MiiEdit:
+ return std::make_shared<Mii>(system, mode, *frontend.mii);
case AppletId::Web:
case AppletId::Shop:
case AppletId::OfflineWeb:
diff --git a/src/core/hle/service/am/applets/applets.h b/src/core/hle/service/am/applets/applets.h
index 15eeb4ee1..0c44aec79 100644
--- a/src/core/hle/service/am/applets/applets.h
+++ b/src/core/hle/service/am/applets/applets.h
@@ -21,6 +21,7 @@ class ControllerApplet;
class ECommerceApplet;
class ErrorApplet;
class ParentalControlsApplet;
+class MiiApplet;
class PhotoViewerApplet;
class ProfileSelectApplet;
class SoftwareKeyboardApplet;
@@ -179,6 +180,7 @@ struct AppletFrontendSet {
using ControllerApplet = std::unique_ptr<Core::Frontend::ControllerApplet>;
using ErrorApplet = std::unique_ptr<Core::Frontend::ErrorApplet>;
using ParentalControlsApplet = std::unique_ptr<Core::Frontend::ParentalControlsApplet>;
+ using MiiApplet = std::unique_ptr<Core::Frontend::MiiApplet>;
using PhotoViewer = std::unique_ptr<Core::Frontend::PhotoViewerApplet>;
using ProfileSelect = std::unique_ptr<Core::Frontend::ProfileSelectApplet>;
using SoftwareKeyboard = std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet>;
@@ -186,9 +188,9 @@ struct AppletFrontendSet {
AppletFrontendSet();
AppletFrontendSet(ControllerApplet controller_applet, ErrorApplet error_applet,
- ParentalControlsApplet parental_controls_applet, PhotoViewer photo_viewer_,
- ProfileSelect profile_select_, SoftwareKeyboard software_keyboard_,
- WebBrowser web_browser_);
+ ParentalControlsApplet parental_controls_applet, MiiApplet mii_applet,
+ PhotoViewer photo_viewer_, ProfileSelect profile_select_,
+ SoftwareKeyboard software_keyboard_, WebBrowser web_browser_);
~AppletFrontendSet();
AppletFrontendSet(const AppletFrontendSet&) = delete;
@@ -200,6 +202,7 @@ struct AppletFrontendSet {
ControllerApplet controller;
ErrorApplet error;
ParentalControlsApplet parental_controls;
+ MiiApplet mii;
PhotoViewer photo_viewer;
ProfileSelect profile_select;
SoftwareKeyboard software_keyboard;
diff --git a/src/core/hle/service/apm/apm_controller.cpp b/src/core/hle/service/apm/apm_controller.cpp
index 98839fe97..187fef2ad 100644
--- a/src/core/hle/service/apm/apm_controller.cpp
+++ b/src/core/hle/service/apm/apm_controller.cpp
@@ -17,8 +17,8 @@ constexpr auto DEFAULT_PERFORMANCE_CONFIGURATION = PerformanceConfiguration::Con
Controller::Controller(Core::Timing::CoreTiming& core_timing_)
: core_timing{core_timing_}, configs{
- {PerformanceMode::Handheld, DEFAULT_PERFORMANCE_CONFIGURATION},
- {PerformanceMode::Docked, DEFAULT_PERFORMANCE_CONFIGURATION},
+ {PerformanceMode::Normal, DEFAULT_PERFORMANCE_CONFIGURATION},
+ {PerformanceMode::Boost, DEFAULT_PERFORMANCE_CONFIGURATION},
} {}
Controller::~Controller() = default;
@@ -63,13 +63,13 @@ void Controller::SetFromCpuBoostMode(CpuBoostMode mode) {
PerformanceConfiguration::Config15,
}};
- SetPerformanceConfiguration(PerformanceMode::Docked,
+ SetPerformanceConfiguration(PerformanceMode::Boost,
BOOST_MODE_TO_CONFIG_MAP.at(static_cast<u32>(mode)));
}
PerformanceMode Controller::GetCurrentPerformanceMode() const {
- return Settings::values.use_docked_mode.GetValue() ? PerformanceMode::Docked
- : PerformanceMode::Handheld;
+ return Settings::values.use_docked_mode.GetValue() ? PerformanceMode::Boost
+ : PerformanceMode::Normal;
}
PerformanceConfiguration Controller::GetCurrentPerformanceConfiguration(PerformanceMode mode) {
diff --git a/src/core/hle/service/apm/apm_controller.h b/src/core/hle/service/apm/apm_controller.h
index 8d48e0104..d6fbd2c0c 100644
--- a/src/core/hle/service/apm/apm_controller.h
+++ b/src/core/hle/service/apm/apm_controller.h
@@ -32,15 +32,18 @@ enum class PerformanceConfiguration : u32 {
Config16 = 0x9222000C,
};
+// This is nn::oe::CpuBoostMode
enum class CpuBoostMode : u32 {
- Disabled = 0,
- Full = 1, // CPU + GPU -> Config 13, 14, 15, or 16
- Partial = 2, // GPU Only -> Config 15 or 16
+ Normal = 0, // Boost mode disabled
+ FastLoad = 1, // CPU + GPU -> Config 13, 14, 15, or 16
+ Partial = 2, // GPU Only -> Config 15 or 16
};
-enum class PerformanceMode : u8 {
- Handheld = 0,
- Docked = 1,
+// This is nn::oe::PerformanceMode
+enum class PerformanceMode : s32 {
+ Invalid = -1,
+ Normal = 0,
+ Boost = 1,
};
// Class to manage the state and change of the emulated system performance.
diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp
index 9f9cea1e0..79cd3acbb 100644
--- a/src/core/hle/service/friend/friend.cpp
+++ b/src/core/hle/service/friend/friend.cpp
@@ -173,7 +173,7 @@ private:
const auto uuid = rp.PopRaw<Common::UUID>();
LOG_WARNING(Service_Friend, "(STUBBED) called, local_play={}, uuid=0x{}", local_play,
- uuid.Format());
+ uuid.RawString());
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -186,7 +186,7 @@ private:
[[maybe_unused]] const auto filter = rp.PopRaw<SizedFriendFilter>();
const auto pid = rp.Pop<u64>();
LOG_WARNING(Service_Friend, "(STUBBED) called, offset={}, uuid=0x{}, pid={}", friend_offset,
- uuid.Format(), pid);
+ uuid.RawString(), pid);
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
@@ -312,7 +312,7 @@ void Module::Interface::CreateNotificationService(Kernel::HLERequestContext& ctx
IPC::RequestParser rp{ctx};
auto uuid = rp.PopRaw<Common::UUID>();
- LOG_DEBUG(Service_Friend, "called, uuid=0x{}", uuid.Format());
+ LOG_DEBUG(Service_Friend, "called, uuid=0x{}", uuid.RawString());
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index a2bf7defb..d9202ea6c 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -320,7 +320,7 @@ Hid::Hid(Core::System& system_)
{308, nullptr, "SetSevenSixAxisSensorFusionStrength"},
{309, nullptr, "GetSevenSixAxisSensorFusionStrength"},
{310, &Hid::ResetSevenSixAxisSensorTimestamp, "ResetSevenSixAxisSensorTimestamp"},
- {400, nullptr, "IsUsbFullKeyControllerEnabled"},
+ {400, &Hid::IsUsbFullKeyControllerEnabled, "IsUsbFullKeyControllerEnabled"},
{401, nullptr, "EnableUsbFullKeyController"},
{402, nullptr, "IsUsbFullKeyControllerConnected"},
{403, nullptr, "HasBattery"},
@@ -1673,6 +1673,16 @@ void Hid::ResetSevenSixAxisSensorTimestamp(Kernel::HLERequestContext& ctx) {
rb.Push(ResultSuccess);
}
+void Hid::IsUsbFullKeyControllerEnabled(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+
+ LOG_WARNING(Service_HID, "(STUBBED) called");
+
+ IPC::ResponseBuilder rb{ctx, 3};
+ rb.Push(ResultSuccess);
+ rb.Push(false);
+}
+
void Hid::SetIsPalmaAllConnectable(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h
index d290df161..c281081a7 100644
--- a/src/core/hle/service/hid/hid.h
+++ b/src/core/hle/service/hid/hid.h
@@ -159,6 +159,7 @@ private:
void InitializeSevenSixAxisSensor(Kernel::HLERequestContext& ctx);
void FinalizeSevenSixAxisSensor(Kernel::HLERequestContext& ctx);
void ResetSevenSixAxisSensorTimestamp(Kernel::HLERequestContext& ctx);
+ void IsUsbFullKeyControllerEnabled(Kernel::HLERequestContext& ctx);
void SetIsPalmaAllConnectable(Kernel::HLERequestContext& ctx);
void SetPalmaBoostMode(Kernel::HLERequestContext& ctx);
void SetNpadCommunicationMode(Kernel::HLERequestContext& ctx);
diff --git a/src/core/hle/service/kernel_helpers.cpp b/src/core/hle/service/kernel_helpers.cpp
index 62f4cdfb2..ff0bbb788 100644
--- a/src/core/hle/service/kernel_helpers.cpp
+++ b/src/core/hle/service/kernel_helpers.cpp
@@ -3,7 +3,9 @@
// Refer to the license.txt file included.
#include "core/core.h"
+#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
+#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/k_readable_event.h"
#include "core/hle/kernel/k_resource_limit.h"
@@ -15,9 +17,11 @@ namespace Service::KernelHelpers {
ServiceContext::ServiceContext(Core::System& system_, std::string name_)
: kernel(system_.Kernel()) {
+ // Create the process.
process = Kernel::KProcess::Create(kernel);
ASSERT(Kernel::KProcess::Initialize(process, system_, std::move(name_),
- Kernel::KProcess::ProcessType::Userland)
+ Kernel::KProcess::ProcessType::KernelInternal,
+ kernel.GetSystemResourceLimit())
.IsSuccess());
}
@@ -43,7 +47,7 @@ Kernel::KEvent* ServiceContext::CreateEvent(std::string&& name) {
}
// Initialize the event.
- event->Initialize(std::move(name));
+ event->Initialize(std::move(name), process);
// Commit the thread reservation.
event_reservation.Commit();
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
index 9fc7bb1b1..099276420 100644
--- a/src/core/hle/service/ldr/ldr.cpp
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -288,7 +288,7 @@ public:
}
bool ValidateRegionForMap(Kernel::KPageTable& page_table, VAddr start, std::size_t size) const {
- constexpr std::size_t padding_size{4 * Kernel::PageSize};
+ const std::size_t padding_size{page_table.GetNumGuardPages() * Kernel::PageSize};
const auto start_info{page_table.QueryInfo(start - 1)};
if (start_info.state != Kernel::KMemoryState::Free) {
@@ -308,31 +308,69 @@ public:
return (start + size + padding_size) <= (end_info.GetAddress() + end_info.GetSize());
}
- VAddr GetRandomMapRegion(const Kernel::KPageTable& page_table, std::size_t size) const {
- VAddr addr{};
- const std::size_t end_pages{(page_table.GetAliasCodeRegionSize() - size) >>
- Kernel::PageBits};
- do {
- addr = page_table.GetAliasCodeRegionStart() +
- (Kernel::KSystemControl::GenerateRandomRange(0, end_pages) << Kernel::PageBits);
- } while (!page_table.IsInsideAddressSpace(addr, size) ||
- page_table.IsInsideHeapRegion(addr, size) ||
- page_table.IsInsideAliasRegion(addr, size));
- return addr;
+ ResultCode GetAvailableMapRegion(Kernel::KPageTable& page_table, u64 size, VAddr& out_addr) {
+ size = Common::AlignUp(size, Kernel::PageSize);
+ size += page_table.GetNumGuardPages() * Kernel::PageSize * 4;
+
+ const auto is_region_available = [&](VAddr addr) {
+ const auto end_addr = addr + size;
+ while (addr < end_addr) {
+ if (system.Memory().IsValidVirtualAddress(addr)) {
+ return false;
+ }
+
+ if (!page_table.IsInsideAddressSpace(out_addr, size)) {
+ return false;
+ }
+
+ if (page_table.IsInsideHeapRegion(out_addr, size)) {
+ return false;
+ }
+
+ if (page_table.IsInsideAliasRegion(out_addr, size)) {
+ return false;
+ }
+
+ addr += Kernel::PageSize;
+ }
+ return true;
+ };
+
+ bool succeeded = false;
+ const auto map_region_end =
+ page_table.GetAliasCodeRegionStart() + page_table.GetAliasCodeRegionSize();
+ while (current_map_addr < map_region_end) {
+ if (is_region_available(current_map_addr)) {
+ succeeded = true;
+ break;
+ }
+ current_map_addr += 0x100000;
+ }
+
+ if (!succeeded) {
+ UNREACHABLE_MSG("Out of address space!");
+ return Kernel::ResultOutOfMemory;
+ }
+
+ out_addr = current_map_addr;
+ current_map_addr += size;
+
+ return ResultSuccess;
}
- ResultVal<VAddr> MapProcessCodeMemory(Kernel::KProcess* process, VAddr baseAddress,
- u64 size) const {
+ ResultVal<VAddr> MapProcessCodeMemory(Kernel::KProcess* process, VAddr base_addr, u64 size) {
+ auto& page_table{process->PageTable()};
+ VAddr addr{};
+
for (std::size_t retry = 0; retry < MAXIMUM_MAP_RETRIES; retry++) {
- auto& page_table{process->PageTable()};
- const VAddr addr{GetRandomMapRegion(page_table, size)};
- const ResultCode result{page_table.MapCodeMemory(addr, baseAddress, size)};
+ R_TRY(GetAvailableMapRegion(page_table, size, addr));
+ const ResultCode result{page_table.MapCodeMemory(addr, base_addr, size)};
if (result == Kernel::ResultInvalidCurrentMemory) {
continue;
}
- CASCADE_CODE(result);
+ R_TRY(result);
if (ValidateRegionForMap(page_table, addr, size)) {
return addr;
@@ -343,7 +381,7 @@ public:
}
ResultVal<VAddr> MapNro(Kernel::KProcess* process, VAddr nro_addr, std::size_t nro_size,
- VAddr bss_addr, std::size_t bss_size, std::size_t size) const {
+ VAddr bss_addr, std::size_t bss_size, std::size_t size) {
for (std::size_t retry = 0; retry < MAXIMUM_MAP_RETRIES; retry++) {
auto& page_table{process->PageTable()};
VAddr addr{};
@@ -597,6 +635,7 @@ public:
LOG_WARNING(Service_LDR, "(STUBBED) called");
initialized = true;
+ current_map_addr = system.CurrentProcess()->PageTable().GetAliasCodeRegionStart();
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@@ -607,6 +646,7 @@ private:
std::map<VAddr, NROInfo> nro;
std::map<VAddr, std::vector<SHA256Hash>> nrr;
+ VAddr current_map_addr{};
bool IsValidNROHash(const SHA256Hash& hash) const {
return std::any_of(nrr.begin(), nrr.end(), [&hash](const auto& p) {
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp
index ca4ed35bb..0a57c3cde 100644
--- a/src/core/hle/service/mii/mii_manager.cpp
+++ b/src/core/hle/service/mii/mii_manager.cpp
@@ -118,16 +118,6 @@ u16 GenerateCrc16(const void* data, std::size_t size) {
return Common::swap16(static_cast<u16>(crc));
}
-Common::UUID GenerateValidUUID() {
- auto uuid{Common::UUID::Generate()};
-
- // Bit 7 must be set, and bit 6 unset for the UUID to be valid
- uuid.uuid[1] &= 0xFFFFFFFFFFFFFF3FULL;
- uuid.uuid[1] |= 0x0000000000000080ULL;
-
- return uuid;
-}
-
template <typename T>
T GetRandomValue(T min, T max) {
std::random_device device;
@@ -383,7 +373,7 @@ MiiStoreData::MiiStoreData() = default;
MiiStoreData::MiiStoreData(const MiiStoreData::Name& name, const MiiStoreBitFields& bit_fields,
const Common::UUID& user_id) {
data.name = name;
- data.uuid = GenerateValidUUID();
+ data.uuid = Common::UUID::MakeRandomRFC4122V4();
std::memcpy(data.data.data(), &bit_fields, sizeof(MiiStoreBitFields));
data_crc = GenerateCrc16(data.data.data(), sizeof(data));
diff --git a/src/core/hle/service/mii/mii_manager.h b/src/core/hle/service/mii/mii_manager.h
index 8e048fc56..6999d15b1 100644
--- a/src/core/hle/service/mii/mii_manager.h
+++ b/src/core/hle/service/mii/mii_manager.h
@@ -202,7 +202,7 @@ struct MiiStoreData {
static_assert(sizeof(MiiStoreBitFields) == sizeof(data), "data field has incorrect size.");
Name name{};
- Common::UUID uuid{Common::INVALID_UUID};
+ Common::UUID uuid{};
} data;
u16 data_crc{};
@@ -326,7 +326,7 @@ public:
ResultCode GetIndex(const MiiInfo& info, u32& index);
private:
- const Common::UUID user_id{Common::INVALID_UUID};
+ const Common::UUID user_id{};
u64 update_counter{};
};
diff --git a/src/core/hle/service/mnpp/mnpp_app.cpp b/src/core/hle/service/mnpp/mnpp_app.cpp
new file mode 100644
index 000000000..53497612f
--- /dev/null
+++ b/src/core/hle/service/mnpp/mnpp_app.cpp
@@ -0,0 +1,45 @@
+// Copyright 2022 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/service/mnpp/mnpp_app.h"
+#include "core/hle/service/sm/sm.h"
+
+namespace Service::MNPP {
+
+class MNPP_APP final : public ServiceFramework<MNPP_APP> {
+public:
+ explicit MNPP_APP(Core::System& system_) : ServiceFramework{system_, "mnpp:app"} {
+ // clang-format off
+ static const FunctionInfo functions[] = {
+ {0, &MNPP_APP::Unknown0, "unknown0"},
+ {1, &MNPP_APP::Unknown1, "unknown1"},
+ };
+ // clang-format on
+
+ RegisterHandlers(functions);
+ }
+
+private:
+ void Unknown0(Kernel::HLERequestContext& ctx) {
+ LOG_WARNING(Service_MNPP, "(STUBBED) called");
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+ }
+
+ void Unknown1(Kernel::HLERequestContext& ctx) {
+ LOG_WARNING(Service_MNPP, "(STUBBED) called");
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+ }
+};
+
+void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) {
+ std::make_shared<MNPP_APP>(system)->InstallAsService(service_manager);
+}
+
+} // namespace Service::MNPP
diff --git a/src/core/hle/service/mnpp/mnpp_app.h b/src/core/hle/service/mnpp/mnpp_app.h
new file mode 100644
index 000000000..6bf20b494
--- /dev/null
+++ b/src/core/hle/service/mnpp/mnpp_app.h
@@ -0,0 +1,20 @@
+// Copyright 2022 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace Core {
+class System;
+}
+
+namespace Service::SM {
+class ServiceManager;
+}
+
+namespace Service::MNPP {
+
+/// Registers all MNPP services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system);
+
+} // namespace Service::MNPP
diff --git a/src/core/hle/service/nfp/nfp.cpp b/src/core/hle/service/nfp/nfp.cpp
index 761d0d3c6..513107715 100644
--- a/src/core/hle/service/nfp/nfp.cpp
+++ b/src/core/hle/service/nfp/nfp.cpp
@@ -7,6 +7,9 @@
#include "common/logging/log.h"
#include "core/core.h"
+#include "core/hid/emulated_controller.h"
+#include "core/hid/hid_core.h"
+#include "core/hid/hid_types.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/nfp/nfp.h"
@@ -14,343 +17,790 @@
namespace Service::NFP {
namespace ErrCodes {
-constexpr ResultCode ERR_NO_APPLICATION_AREA(ErrorModule::NFP, 152);
+constexpr ResultCode DeviceNotFound(ErrorModule::NFP, 64);
+constexpr ResultCode WrongDeviceState(ErrorModule::NFP, 73);
+constexpr ResultCode ApplicationAreaIsNotInitialized(ErrorModule::NFP, 128);
+constexpr ResultCode ApplicationAreaExist(ErrorModule::NFP, 168);
} // namespace ErrCodes
-Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_,
- const char* name)
- : ServiceFramework{system_, name}, module{std::move(module_)}, service_context{system_,
- "NFP::IUser"} {
- nfc_tag_load = service_context.CreateEvent("NFP::IUser:NFCTagDetected");
-}
-
-Module::Interface::~Interface() {
- service_context.CloseEvent(nfc_tag_load);
-}
-
-class IUser final : public ServiceFramework<IUser> {
-public:
- explicit IUser(Module::Interface& nfp_interface_, Core::System& system_,
- KernelHelpers::ServiceContext& service_context_)
- : ServiceFramework{system_, "NFP::IUser"}, nfp_interface{nfp_interface_},
- service_context{service_context_} {
- static const FunctionInfo functions[] = {
- {0, &IUser::Initialize, "Initialize"},
- {1, &IUser::Finalize, "Finalize"},
- {2, &IUser::ListDevices, "ListDevices"},
- {3, &IUser::StartDetection, "StartDetection"},
- {4, &IUser::StopDetection, "StopDetection"},
- {5, &IUser::Mount, "Mount"},
- {6, &IUser::Unmount, "Unmount"},
- {7, &IUser::OpenApplicationArea, "OpenApplicationArea"},
- {8, &IUser::GetApplicationArea, "GetApplicationArea"},
- {9, nullptr, "SetApplicationArea"},
- {10, nullptr, "Flush"},
- {11, nullptr, "Restore"},
- {12, nullptr, "CreateApplicationArea"},
- {13, &IUser::GetTagInfo, "GetTagInfo"},
- {14, &IUser::GetRegisterInfo, "GetRegisterInfo"},
- {15, &IUser::GetCommonInfo, "GetCommonInfo"},
- {16, &IUser::GetModelInfo, "GetModelInfo"},
- {17, &IUser::AttachActivateEvent, "AttachActivateEvent"},
- {18, &IUser::AttachDeactivateEvent, "AttachDeactivateEvent"},
- {19, &IUser::GetState, "GetState"},
- {20, &IUser::GetDeviceState, "GetDeviceState"},
- {21, &IUser::GetNpadId, "GetNpadId"},
- {22, &IUser::GetApplicationAreaSize, "GetApplicationAreaSize"},
- {23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
- {24, nullptr, "RecreateApplicationArea"},
- };
- RegisterHandlers(functions);
+constexpr u32 ApplicationAreaSize = 0xD8;
+
+IUser::IUser(Module::Interface& nfp_interface_, Core::System& system_)
+ : ServiceFramework{system_, "NFP::IUser"}, service_context{system_, service_name},
+ nfp_interface{nfp_interface_} {
+ static const FunctionInfo functions[] = {
+ {0, &IUser::Initialize, "Initialize"},
+ {1, &IUser::Finalize, "Finalize"},
+ {2, &IUser::ListDevices, "ListDevices"},
+ {3, &IUser::StartDetection, "StartDetection"},
+ {4, &IUser::StopDetection, "StopDetection"},
+ {5, &IUser::Mount, "Mount"},
+ {6, &IUser::Unmount, "Unmount"},
+ {7, &IUser::OpenApplicationArea, "OpenApplicationArea"},
+ {8, &IUser::GetApplicationArea, "GetApplicationArea"},
+ {9, &IUser::SetApplicationArea, "SetApplicationArea"},
+ {10, nullptr, "Flush"},
+ {11, nullptr, "Restore"},
+ {12, &IUser::CreateApplicationArea, "CreateApplicationArea"},
+ {13, &IUser::GetTagInfo, "GetTagInfo"},
+ {14, &IUser::GetRegisterInfo, "GetRegisterInfo"},
+ {15, &IUser::GetCommonInfo, "GetCommonInfo"},
+ {16, &IUser::GetModelInfo, "GetModelInfo"},
+ {17, &IUser::AttachActivateEvent, "AttachActivateEvent"},
+ {18, &IUser::AttachDeactivateEvent, "AttachDeactivateEvent"},
+ {19, &IUser::GetState, "GetState"},
+ {20, &IUser::GetDeviceState, "GetDeviceState"},
+ {21, &IUser::GetNpadId, "GetNpadId"},
+ {22, &IUser::GetApplicationAreaSize, "GetApplicationAreaSize"},
+ {23, &IUser::AttachAvailabilityChangeEvent, "AttachAvailabilityChangeEvent"},
+ {24, nullptr, "RecreateApplicationArea"},
+ };
+ RegisterHandlers(functions);
- deactivate_event = service_context.CreateEvent("NFP::IUser:DeactivateEvent");
- availability_change_event =
- service_context.CreateEvent("NFP::IUser:AvailabilityChangeEvent");
- }
+ availability_change_event = service_context.CreateEvent("IUser:AvailabilityChangeEvent");
+}
- ~IUser() override {
- service_context.CloseEvent(deactivate_event);
- service_context.CloseEvent(availability_change_event);
- }
+void IUser::Initialize(Kernel::HLERequestContext& ctx) {
+ LOG_INFO(Service_NFC, "called");
-private:
- struct TagInfo {
- std::array<u8, 10> uuid;
- u8 uuid_length; // TODO(ogniK): Figure out if this is actual the uuid length or does it
- // mean something else
- std::array<u8, 0x15> padding_1;
- u32_le protocol;
- u32_le tag_type;
- std::array<u8, 0x2c> padding_2;
- };
- static_assert(sizeof(TagInfo) == 0x54, "TagInfo is an invalid size");
+ state = State::Initialized;
- enum class State : u32 {
- NonInitialized = 0,
- Initialized = 1,
- };
+ // TODO(german77): Loop through all interfaces
+ nfp_interface.Initialize();
- enum class DeviceState : u32 {
- Initialized = 0,
- SearchingForTag = 1,
- TagFound = 2,
- TagRemoved = 3,
- TagNearby = 4,
- Unknown5 = 5,
- Finalized = 6
- };
+ IPC::ResponseBuilder rb{ctx, 2, 0};
+ rb.Push(ResultSuccess);
+}
- struct CommonInfo {
- u16_be last_write_year;
- u8 last_write_month;
- u8 last_write_day;
- u16_be write_counter;
- u16_be version;
- u32_be application_area_size;
- INSERT_PADDING_BYTES(0x34);
- };
- static_assert(sizeof(CommonInfo) == 0x40, "CommonInfo is an invalid size");
+void IUser::Finalize(Kernel::HLERequestContext& ctx) {
+ LOG_INFO(Service_NFP, "called");
- void Initialize(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFC, "called");
+ state = State::NonInitialized;
- IPC::ResponseBuilder rb{ctx, 2, 0};
- rb.Push(ResultSuccess);
+ // TODO(german77): Loop through all interfaces
+ nfp_interface.Finalize();
- state = State::Initialized;
- }
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultSuccess);
+}
- void GetState(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFC, "called");
+void IUser::ListDevices(Kernel::HLERequestContext& ctx) {
+ LOG_INFO(Service_NFP, "called");
- IPC::ResponseBuilder rb{ctx, 3, 0};
- rb.Push(ResultSuccess);
- rb.PushRaw<u32>(static_cast<u32>(state));
+ std::vector<u64> devices;
+
+ // TODO(german77): Loop through all interfaces
+ devices.push_back(nfp_interface.GetHandle());
+
+ ctx.WriteBuffer(devices);
+
+ IPC::ResponseBuilder rb{ctx, 3};
+ rb.Push(ResultSuccess);
+ rb.Push(static_cast<s32>(devices.size()));
+}
+
+void IUser::StartDetection(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ const auto nfp_protocol{rp.Pop<s32>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}, nfp_protocol={}", device_handle, nfp_protocol);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.StartDetection(nfp_protocol);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(result);
+ return;
}
- void ListDevices(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
- const u32 array_size = rp.Pop<u32>();
- LOG_DEBUG(Service_NFP, "called, array_size={}", array_size);
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- ctx.WriteBuffer(device_handle);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
- IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.Push<u32>(1);
+void IUser::StopDetection(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.StopDetection();
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(result);
+ return;
}
- void GetNpadId(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
- const u64 dev_handle = rp.Pop<u64>();
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.Push<u32>(npad_id);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::Mount(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ const auto model_type{rp.PopEnum<ModelType>()};
+ const auto mount_target{rp.PopEnum<MountTarget>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}, model_type={}, mount_target={}", device_handle,
+ model_type, mount_target);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.Mount();
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(result);
+ return;
}
- void AttachActivateEvent(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
- const u64 dev_handle = rp.Pop<u64>();
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- IPC::ResponseBuilder rb{ctx, 2, 1};
- rb.Push(ResultSuccess);
- rb.PushCopyObjects(nfp_interface.GetNFCEvent());
- has_attached_handle = true;
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::Unmount(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.Unmount();
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(result);
+ return;
}
- void AttachDeactivateEvent(Kernel::HLERequestContext& ctx) {
- IPC::RequestParser rp{ctx};
- const u64 dev_handle = rp.Pop<u64>();
- LOG_DEBUG(Service_NFP, "called, dev_handle=0x{:X}", dev_handle);
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- IPC::ResponseBuilder rb{ctx, 2, 1};
- rb.Push(ResultSuccess);
- rb.PushCopyObjects(deactivate_event->GetReadableEvent());
- }
-
- void StopDetection(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
-
- switch (device_state) {
- case DeviceState::TagFound:
- case DeviceState::TagNearby:
- deactivate_event->GetWritableEvent().Signal();
- device_state = DeviceState::Initialized;
- break;
- case DeviceState::SearchingForTag:
- case DeviceState::TagRemoved:
- device_state = DeviceState::Initialized;
- break;
- default:
- break;
- }
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::OpenApplicationArea(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ const auto access_id{rp.Pop<u32>()};
+ LOG_WARNING(Service_NFP, "(STUBBED) called, device_handle={}, access_id={}", device_handle,
+ access_id);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.OpenApplicationArea(access_id);
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void GetDeviceState(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::GetApplicationArea(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ std::vector<u8> data{};
+ const auto result = nfp_interface.GetApplicationArea(data);
+ ctx.WriteBuffer(data);
IPC::ResponseBuilder rb{ctx, 3};
- rb.Push(ResultSuccess);
- rb.Push<u32>(static_cast<u32>(device_state));
+ rb.Push(result);
+ rb.Push(static_cast<u32>(data.size()));
+ return;
}
- void StartDetection(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- if (device_state == DeviceState::Initialized || device_state == DeviceState::TagRemoved) {
- device_state = DeviceState::SearchingForTag;
- }
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::SetApplicationArea(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ const auto data{ctx.ReadBuffer()};
+ LOG_WARNING(Service_NFP, "(STUBBED) called, device_handle={}, data_size={}", device_handle,
+ data.size());
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.SetApplicationArea(data);
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void GetTagInfo(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::CreateApplicationArea(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ const auto access_id{rp.Pop<u32>()};
+ const auto data{ctx.ReadBuffer()};
+ LOG_WARNING(Service_NFP, "(STUBBED) called, device_handle={}, data_size={}, access_id={}",
+ device_handle, access_id, data.size());
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ const auto result = nfp_interface.CreateApplicationArea(access_id, data);
IPC::ResponseBuilder rb{ctx, 2};
- const auto& amiibo = nfp_interface.GetAmiiboBuffer();
- const TagInfo tag_info{
- .uuid = amiibo.uuid,
- .uuid_length = static_cast<u8>(amiibo.uuid.size()),
- .padding_1 = {},
- .protocol = 1, // TODO(ogniK): Figure out actual values
- .tag_type = 2,
- .padding_2 = {},
- };
- ctx.WriteBuffer(tag_info);
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void Mount(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::GetTagInfo(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
- device_state = DeviceState::TagNearby;
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ TagInfo tag_info{};
+ const auto result = nfp_interface.GetTagInfo(tag_info);
+ ctx.WriteBuffer(tag_info);
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void GetModelInfo(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::GetRegisterInfo(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ RegisterInfo register_info{};
+ const auto result = nfp_interface.GetRegisterInfo(register_info);
+ ctx.WriteBuffer(register_info);
IPC::ResponseBuilder rb{ctx, 2};
- const auto& amiibo = nfp_interface.GetAmiiboBuffer();
- ctx.WriteBuffer(amiibo.model_info);
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void Unmount(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- device_state = DeviceState::TagFound;
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+void IUser::GetCommonInfo(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ CommonInfo common_info{};
+ const auto result = nfp_interface.GetCommonInfo(common_info);
+ ctx.WriteBuffer(common_info);
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void Finalize(Kernel::HLERequestContext& ctx) {
- LOG_DEBUG(Service_NFP, "called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
- device_state = DeviceState::Finalized;
+void IUser::GetModelInfo(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_INFO(Service_NFP, "called, device_handle={}", device_handle);
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ ModelInfo model_info{};
+ const auto result = nfp_interface.GetModelInfo(model_info);
+ ctx.WriteBuffer(model_info);
IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ResultSuccess);
+ rb.Push(result);
+ return;
}
- void AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+void IUser::AttachActivateEvent(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_DEBUG(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
IPC::ResponseBuilder rb{ctx, 2, 1};
rb.Push(ResultSuccess);
- rb.PushCopyObjects(availability_change_event->GetReadableEvent());
+ rb.PushCopyObjects(nfp_interface.GetActivateEvent());
+ return;
}
- void GetRegisterInfo(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- // TODO(ogniK): Pull Mii and owner data from amiibo
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
- IPC::ResponseBuilder rb{ctx, 2};
+void IUser::AttachDeactivateEvent(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_DEBUG(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ IPC::ResponseBuilder rb{ctx, 2, 1};
rb.Push(ResultSuccess);
+ rb.PushCopyObjects(nfp_interface.GetDeactivateEvent());
+ return;
}
- void GetCommonInfo(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- // TODO(ogniK): Pull common information from amiibo
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
- CommonInfo common_info{};
- common_info.application_area_size = 0;
- ctx.WriteBuffer(common_info);
+void IUser::GetState(Kernel::HLERequestContext& ctx) {
+ LOG_DEBUG(Service_NFC, "called");
- IPC::ResponseBuilder rb{ctx, 2};
+ IPC::ResponseBuilder rb{ctx, 3, 0};
+ rb.Push(ResultSuccess);
+ rb.PushEnum(state);
+}
+
+void IUser::GetDeviceState(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_DEBUG(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
+ IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
+ rb.PushEnum(nfp_interface.GetCurrentState());
+ return;
}
- void OpenApplicationArea(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
- IPC::ResponseBuilder rb{ctx, 2};
- rb.Push(ErrCodes::ERR_NO_APPLICATION_AREA);
- }
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
- void GetApplicationAreaSize(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
- // We don't need to worry about this since we can just open the file
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::GetNpadId(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_DEBUG(Service_NFP, "called, device_handle={}", device_handle);
+
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
- rb.PushRaw<u32>(0); // This is from the GetCommonInfo stub
+ rb.PushEnum(nfp_interface.GetNpadId());
+ return;
}
- void GetApplicationArea(Kernel::HLERequestContext& ctx) {
- LOG_WARNING(Service_NFP, "(STUBBED) called");
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
- // TODO(ogniK): Pull application area from amiibo
+void IUser::GetApplicationAreaSize(Kernel::HLERequestContext& ctx) {
+ IPC::RequestParser rp{ctx};
+ const auto device_handle{rp.Pop<u64>()};
+ LOG_DEBUG(Service_NFP, "called, device_handle={}", device_handle);
+ // TODO(german77): Loop through all interfaces
+ if (device_handle == nfp_interface.GetHandle()) {
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(ResultSuccess);
- rb.PushRaw<u32>(0); // This is from the GetCommonInfo stub
+ rb.Push(ApplicationAreaSize);
+ return;
}
- Module::Interface& nfp_interface;
- KernelHelpers::ServiceContext& service_context;
+ LOG_ERROR(Service_NFP, "Handle not found, device_handle={}", device_handle);
+
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ErrCodes::DeviceNotFound);
+}
+
+void IUser::AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx) {
+ LOG_DEBUG(Service_NFP, "(STUBBED) called");
- bool has_attached_handle{};
- const u64 device_handle{0}; // Npad device 1
- const u32 npad_id{0}; // Player 1 controller
- State state{State::NonInitialized};
- DeviceState device_state{DeviceState::Initialized};
- Kernel::KEvent* deactivate_event;
- Kernel::KEvent* availability_change_event;
-};
+ IPC::ResponseBuilder rb{ctx, 2, 1};
+ rb.Push(ResultSuccess);
+ rb.PushCopyObjects(availability_change_event->GetReadableEvent());
+}
+
+Module::Interface::Interface(std::shared_ptr<Module> module_, Core::System& system_,
+ const char* name)
+ : ServiceFramework{system_, name}, module{std::move(module_)},
+ npad_id{Core::HID::NpadIdType::Player1}, service_context{system_, service_name} {
+ activate_event = service_context.CreateEvent("IUser:NFPActivateEvent");
+ deactivate_event = service_context.CreateEvent("IUser:NFPDeactivateEvent");
+}
+
+Module::Interface::~Interface() = default;
void Module::Interface::CreateUserInterface(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service_NFP, "called");
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
rb.Push(ResultSuccess);
- rb.PushIpcInterface<IUser>(*this, system, service_context);
+ rb.PushIpcInterface<IUser>(*this, system);
}
bool Module::Interface::LoadAmiibo(const std::vector<u8>& buffer) {
- if (buffer.size() < sizeof(AmiiboFile)) {
+ if (device_state != DeviceState::SearchingForTag) {
+ LOG_ERROR(Service_NFP, "Game is not looking for amiibos, current state {}", device_state);
+ return false;
+ }
+
+ constexpr auto tag_size = sizeof(NTAG215File);
+ constexpr auto tag_size_without_password = sizeof(NTAG215File) - sizeof(NTAG215Password);
+
+ std::vector<u8> amiibo_buffer = buffer;
+
+ if (amiibo_buffer.size() < tag_size_without_password) {
+ LOG_ERROR(Service_NFP, "Wrong file size {}", buffer.size());
+ return false;
+ }
+
+ // Ensure it has the correct size
+ if (amiibo_buffer.size() != tag_size) {
+ amiibo_buffer.resize(tag_size, 0);
+ }
+
+ LOG_INFO(Service_NFP, "Amiibo detected");
+ std::memcpy(&tag_data, buffer.data(), tag_size);
+
+ if (!IsAmiiboValid()) {
return false;
}
- std::memcpy(&amiibo, buffer.data(), sizeof(amiibo));
- nfc_tag_load->GetWritableEvent().Signal();
+ // This value can't be dumped from a tag. Generate it
+ tag_data.password.PWD = GetTagPassword(tag_data.uuid);
+
+ device_state = DeviceState::TagFound;
+ activate_event->GetWritableEvent().Signal();
return true;
}
-Kernel::KReadableEvent& Module::Interface::GetNFCEvent() {
- return nfc_tag_load->GetReadableEvent();
+void Module::Interface::CloseAmiibo() {
+ LOG_INFO(Service_NFP, "Remove amiibo");
+ device_state = DeviceState::TagRemoved;
+ is_application_area_initialized = false;
+ application_area_id = 0;
+ application_area_data.clear();
+ deactivate_event->GetWritableEvent().Signal();
+}
+
+bool Module::Interface::IsAmiiboValid() const {
+ const auto& amiibo_data = tag_data.user_memory;
+ LOG_DEBUG(Service_NFP, "uuid_lock=0x{0:x}", tag_data.lock_bytes);
+ LOG_DEBUG(Service_NFP, "compability_container=0x{0:x}", tag_data.compability_container);
+ LOG_DEBUG(Service_NFP, "crypto_init=0x{0:x}", amiibo_data.crypto_init);
+ LOG_DEBUG(Service_NFP, "write_count={}", amiibo_data.write_count);
+
+ LOG_DEBUG(Service_NFP, "character_id=0x{0:x}", amiibo_data.model_info.character_id);
+ LOG_DEBUG(Service_NFP, "character_variant={}", amiibo_data.model_info.character_variant);
+ LOG_DEBUG(Service_NFP, "amiibo_type={}", amiibo_data.model_info.amiibo_type);
+ LOG_DEBUG(Service_NFP, "model_number=0x{0:x}", amiibo_data.model_info.model_number);
+ LOG_DEBUG(Service_NFP, "series={}", amiibo_data.model_info.series);
+ LOG_DEBUG(Service_NFP, "fixed_value=0x{0:x}", amiibo_data.model_info.fixed);
+
+ LOG_DEBUG(Service_NFP, "tag_dynamic_lock=0x{0:x}", tag_data.dynamic_lock);
+ LOG_DEBUG(Service_NFP, "tag_CFG0=0x{0:x}", tag_data.CFG0);
+ LOG_DEBUG(Service_NFP, "tag_CFG1=0x{0:x}", tag_data.CFG1);
+
+ // Check against all know constants on an amiibo binary
+ if (tag_data.lock_bytes != 0xE00F) {
+ return false;
+ }
+ if (tag_data.compability_container != 0xEEFF10F1U) {
+ return false;
+ }
+ if ((amiibo_data.crypto_init & 0xFF) != 0xA5) {
+ return false;
+ }
+ if (amiibo_data.model_info.fixed != 0x02) {
+ return false;
+ }
+ if ((tag_data.dynamic_lock & 0xFFFFFF) != 0x0F0001) {
+ return false;
+ }
+ if (tag_data.CFG0 != 0x04000000U) {
+ return false;
+ }
+ if (tag_data.CFG1 != 0x5F) {
+ return false;
+ }
+ return true;
+}
+
+Kernel::KReadableEvent& Module::Interface::GetActivateEvent() const {
+ return activate_event->GetReadableEvent();
+}
+
+Kernel::KReadableEvent& Module::Interface::GetDeactivateEvent() const {
+ return deactivate_event->GetReadableEvent();
+}
+
+void Module::Interface::Initialize() {
+ device_state = DeviceState::Initialized;
+}
+
+void Module::Interface::Finalize() {
+ device_state = DeviceState::Unaviable;
+ is_application_area_initialized = false;
+ application_area_id = 0;
+ application_area_data.clear();
+}
+
+ResultCode Module::Interface::StartDetection(s32 protocol_) {
+ auto npad_device = system.HIDCore().GetEmulatedController(npad_id);
+
+ // TODO(german77): Add callback for when nfc data is available
+
+ if (device_state == DeviceState::Initialized || device_state == DeviceState::TagRemoved) {
+ npad_device->SetPollingMode(Common::Input::PollingMode::NFC);
+ device_state = DeviceState::SearchingForTag;
+ protocol = protocol_;
+ return ResultSuccess;
+ }
+
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+}
+
+ResultCode Module::Interface::StopDetection() {
+ auto npad_device = system.HIDCore().GetEmulatedController(npad_id);
+ npad_device->SetPollingMode(Common::Input::PollingMode::Active);
+
+ if (device_state == DeviceState::TagFound || device_state == DeviceState::TagMounted) {
+ CloseAmiibo();
+ return ResultSuccess;
+ }
+ if (device_state == DeviceState::SearchingForTag || device_state == DeviceState::TagRemoved) {
+ device_state = DeviceState::Initialized;
+ return ResultSuccess;
+ }
+
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+}
+
+ResultCode Module::Interface::Mount() {
+ if (device_state == DeviceState::TagFound) {
+ device_state = DeviceState::TagMounted;
+ return ResultSuccess;
+ }
+
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+}
+
+ResultCode Module::Interface::Unmount() {
+ if (device_state == DeviceState::TagMounted) {
+ is_application_area_initialized = false;
+ application_area_id = 0;
+ application_area_data.clear();
+ device_state = DeviceState::TagFound;
+ return ResultSuccess;
+ }
+
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+}
+
+ResultCode Module::Interface::GetTagInfo(TagInfo& tag_info) const {
+ if (device_state == DeviceState::TagFound || device_state == DeviceState::TagMounted) {
+ tag_info = {
+ .uuid = tag_data.uuid,
+ .uuid_length = static_cast<u8>(tag_data.uuid.size()),
+ .protocol = protocol,
+ .tag_type = static_cast<u32>(tag_data.user_memory.model_info.amiibo_type),
+ };
+ return ResultSuccess;
+ }
+
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+}
+
+ResultCode Module::Interface::GetCommonInfo(CommonInfo& common_info) const {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+
+ // Read this data from the amiibo save file
+ common_info = {
+ .last_write_year = 2022,
+ .last_write_month = 2,
+ .last_write_day = 7,
+ .write_counter = tag_data.user_memory.write_count,
+ .version = 1,
+ .application_area_size = ApplicationAreaSize,
+ };
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::GetModelInfo(ModelInfo& model_info) const {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+
+ model_info = tag_data.user_memory.model_info;
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::GetRegisterInfo(RegisterInfo& register_info) const {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+
+ Service::Mii::MiiManager manager;
+
+ // Read this data from the amiibo save file
+ register_info = {
+ .mii_char_info = manager.BuildDefault(0),
+ .first_write_year = 2022,
+ .first_write_month = 2,
+ .first_write_day = 7,
+ .amiibo_name = {'Y', 'u', 'z', 'u', 'A', 'm', 'i', 'i', 'b', 'o', 0},
+ .unknown = {},
+ };
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::OpenApplicationArea(u32 access_id) {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+ if (AmiiboApplicationDataExist(access_id)) {
+ application_area_data = LoadAmiiboApplicationData(access_id);
+ application_area_id = access_id;
+ is_application_area_initialized = true;
+ }
+ if (!is_application_area_initialized) {
+ LOG_WARNING(Service_NFP, "Application area is not initialized");
+ return ErrCodes::ApplicationAreaIsNotInitialized;
+ }
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::GetApplicationArea(std::vector<u8>& data) const {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+ if (!is_application_area_initialized) {
+ LOG_ERROR(Service_NFP, "Application area is not initialized");
+ return ErrCodes::ApplicationAreaIsNotInitialized;
+ }
+
+ data = application_area_data;
+
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::SetApplicationArea(const std::vector<u8>& data) {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+ if (!is_application_area_initialized) {
+ LOG_ERROR(Service_NFP, "Application area is not initialized");
+ return ErrCodes::ApplicationAreaIsNotInitialized;
+ }
+ application_area_data = data;
+ SaveAmiiboApplicationData(application_area_id, application_area_data);
+ return ResultSuccess;
+}
+
+ResultCode Module::Interface::CreateApplicationArea(u32 access_id, const std::vector<u8>& data) {
+ if (device_state != DeviceState::TagMounted) {
+ LOG_ERROR(Service_NFP, "Wrong device state {}", device_state);
+ return ErrCodes::WrongDeviceState;
+ }
+ if (AmiiboApplicationDataExist(access_id)) {
+ LOG_ERROR(Service_NFP, "Application area already exist");
+ return ErrCodes::ApplicationAreaExist;
+ }
+ application_area_data = data;
+ application_area_id = access_id;
+ SaveAmiiboApplicationData(application_area_id, application_area_data);
+ return ResultSuccess;
+}
+
+bool Module::Interface::AmiiboApplicationDataExist(u32 access_id) const {
+ // TODO(german77): Check if file exist
+ return false;
+}
+
+std::vector<u8> Module::Interface::LoadAmiiboApplicationData(u32 access_id) const {
+ // TODO(german77): Read file
+ std::vector<u8> data(ApplicationAreaSize);
+ return data;
+}
+
+void Module::Interface::SaveAmiiboApplicationData(u32 access_id,
+ const std::vector<u8>& data) const {
+ // TODO(german77): Save file
+}
+
+u64 Module::Interface::GetHandle() const {
+ // Generate a handle based of the npad id
+ return static_cast<u64>(npad_id);
+}
+
+DeviceState Module::Interface::GetCurrentState() const {
+ return device_state;
+}
+
+Core::HID::NpadIdType Module::Interface::GetNpadId() const {
+ return npad_id;
}
-const Module::Interface::AmiiboFile& Module::Interface::GetAmiiboBuffer() const {
- return amiibo;
+u32 Module::Interface::GetTagPassword(const TagUuid& uuid) const {
+ // Verifiy that the generated password is correct
+ u32 password = 0xAA ^ (uuid[1] ^ uuid[3]);
+ password &= (0x55 ^ (uuid[2] ^ uuid[4])) << 8;
+ password &= (0xAA ^ (uuid[3] ^ uuid[5])) << 16;
+ password &= (0x55 ^ (uuid[4] ^ uuid[6])) << 24;
+ return password;
}
void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) {
diff --git a/src/core/hle/service/nfp/nfp.h b/src/core/hle/service/nfp/nfp.h
index 95c127efb..022f13b29 100644
--- a/src/core/hle/service/nfp/nfp.h
+++ b/src/core/hle/service/nfp/nfp.h
@@ -7,15 +7,132 @@
#include <array>
#include <vector>
+#include "common/common_funcs.h"
#include "core/hle/service/kernel_helpers.h"
+#include "core/hle/service/mii/mii_manager.h"
#include "core/hle/service/service.h"
namespace Kernel {
class KEvent;
-}
+class KReadableEvent;
+} // namespace Kernel
+
+namespace Core::HID {
+enum class NpadIdType : u32;
+} // namespace Core::HID
namespace Service::NFP {
+enum class ServiceType : u32 {
+ User,
+ Debug,
+ System,
+};
+
+enum class State : u32 {
+ NonInitialized,
+ Initialized,
+};
+
+enum class DeviceState : u32 {
+ Initialized,
+ SearchingForTag,
+ TagFound,
+ TagRemoved,
+ TagMounted,
+ Unaviable,
+ Finalized,
+};
+
+enum class ModelType : u32 {
+ Amiibo,
+};
+
+enum class MountTarget : u32 {
+ Rom,
+ Ram,
+ All,
+};
+
+enum class AmiiboType : u8 {
+ Figure,
+ Card,
+ Yarn,
+};
+
+enum class AmiiboSeries : u8 {
+ SuperSmashBros,
+ SuperMario,
+ ChibiRobo,
+ YoshiWoollyWorld,
+ Splatoon,
+ AnimalCrossing,
+ EightBitMario,
+ Skylanders,
+ Unknown8,
+ TheLegendOfZelda,
+ ShovelKnight,
+ Unknown11,
+ Kiby,
+ Pokemon,
+ MarioSportsSuperstars,
+ MonsterHunter,
+ BoxBoy,
+ Pikmin,
+ FireEmblem,
+ Metroid,
+ Others,
+ MegaMan,
+ Diablo
+};
+
+using TagUuid = std::array<u8, 10>;
+
+struct TagInfo {
+ TagUuid uuid;
+ u8 uuid_length;
+ INSERT_PADDING_BYTES(0x15);
+ s32 protocol;
+ u32 tag_type;
+ INSERT_PADDING_BYTES(0x30);
+};
+static_assert(sizeof(TagInfo) == 0x58, "TagInfo is an invalid size");
+
+struct CommonInfo {
+ u16 last_write_year;
+ u8 last_write_month;
+ u8 last_write_day;
+ u16 write_counter;
+ u16 version;
+ u32 application_area_size;
+ INSERT_PADDING_BYTES(0x34);
+};
+static_assert(sizeof(CommonInfo) == 0x40, "CommonInfo is an invalid size");
+
+struct ModelInfo {
+ u16 character_id;
+ u8 character_variant;
+ AmiiboType amiibo_type;
+ u16 model_number;
+ AmiiboSeries series;
+ u8 fixed; // Must be 02
+ INSERT_PADDING_BYTES(0x4); // Unknown
+ INSERT_PADDING_BYTES(0x20); // Probably a SHA256-(HMAC?) hash
+ INSERT_PADDING_BYTES(0x14); // SHA256-HMAC
+};
+static_assert(sizeof(ModelInfo) == 0x40, "ModelInfo is an invalid size");
+
+struct RegisterInfo {
+ Service::Mii::MiiInfo mii_char_info;
+ u16 first_write_year;
+ u8 first_write_month;
+ u8 first_write_day;
+ std::array<u8, 11> amiibo_name;
+ u8 unknown;
+ INSERT_PADDING_BYTES(0x98);
+};
+static_assert(sizeof(RegisterInfo) == 0x100, "RegisterInfo is an invalid size");
+
class Module final {
public:
class Interface : public ServiceFramework<Interface> {
@@ -24,34 +141,131 @@ public:
const char* name);
~Interface() override;
- struct ModelInfo {
- std::array<u8, 0x8> amiibo_identification_block;
- INSERT_PADDING_BYTES(0x38);
+ struct EncryptedAmiiboFile {
+ u16 crypto_init; // Must be A5 XX
+ u16 write_count; // Number of times the amiibo has been written?
+ INSERT_PADDING_BYTES(0x20); // System crypts
+ INSERT_PADDING_BYTES(0x20); // SHA256-(HMAC?) hash
+ ModelInfo model_info; // This struct is bigger than documentation
+ INSERT_PADDING_BYTES(0xC); // SHA256-HMAC
+ INSERT_PADDING_BYTES(0x114); // section 1 encrypted buffer
+ INSERT_PADDING_BYTES(0x54); // section 2 encrypted buffer
+ };
+ static_assert(sizeof(EncryptedAmiiboFile) == 0x1F8, "AmiiboFile is an invalid size");
+
+ struct NTAG215Password {
+ u32 PWD; // Password to allow write access
+ u16 PACK; // Password acknowledge reply
+ u16 RFUI; // Reserved for future use
};
- static_assert(sizeof(ModelInfo) == 0x40, "ModelInfo is an invalid size");
+ static_assert(sizeof(NTAG215Password) == 0x8, "NTAG215Password is an invalid size");
- struct AmiiboFile {
- std::array<u8, 10> uuid;
- INSERT_PADDING_BYTES(0x4a);
- ModelInfo model_info;
+ struct NTAG215File {
+ TagUuid uuid; // Unique serial number
+ u16 lock_bytes; // Set defined pages as read only
+ u32 compability_container; // Defines available memory
+ EncryptedAmiiboFile user_memory; // Writable data
+ u32 dynamic_lock; // Dynamic lock
+ u32 CFG0; // Defines memory protected by password
+ u32 CFG1; // Defines number of verification attempts
+ NTAG215Password password; // Password data
};
- static_assert(sizeof(AmiiboFile) == 0x94, "AmiiboFile is an invalid size");
+ static_assert(sizeof(NTAG215File) == 0x21C, "NTAG215File is an invalid size");
void CreateUserInterface(Kernel::HLERequestContext& ctx);
bool LoadAmiibo(const std::vector<u8>& buffer);
- Kernel::KReadableEvent& GetNFCEvent();
- const AmiiboFile& GetAmiiboBuffer() const;
+ void CloseAmiibo();
+
+ void Initialize();
+ void Finalize();
+
+ ResultCode StartDetection(s32 protocol_);
+ ResultCode StopDetection();
+ ResultCode Mount();
+ ResultCode Unmount();
+
+ ResultCode GetTagInfo(TagInfo& tag_info) const;
+ ResultCode GetCommonInfo(CommonInfo& common_info) const;
+ ResultCode GetModelInfo(ModelInfo& model_info) const;
+ ResultCode GetRegisterInfo(RegisterInfo& register_info) const;
+
+ ResultCode OpenApplicationArea(u32 access_id);
+ ResultCode GetApplicationArea(std::vector<u8>& data) const;
+ ResultCode SetApplicationArea(const std::vector<u8>& data);
+ ResultCode CreateApplicationArea(u32 access_id, const std::vector<u8>& data);
+
+ u64 GetHandle() const;
+ DeviceState GetCurrentState() const;
+ Core::HID::NpadIdType GetNpadId() const;
+
+ Kernel::KReadableEvent& GetActivateEvent() const;
+ Kernel::KReadableEvent& GetDeactivateEvent() const;
protected:
std::shared_ptr<Module> module;
private:
+ /// Validates that the amiibo file is not corrupted
+ bool IsAmiiboValid() const;
+
+ bool AmiiboApplicationDataExist(u32 access_id) const;
+ std::vector<u8> LoadAmiiboApplicationData(u32 access_id) const;
+ void SaveAmiiboApplicationData(u32 access_id, const std::vector<u8>& data) const;
+
+ /// return password needed to allow write access to protected memory
+ u32 GetTagPassword(const TagUuid& uuid) const;
+
+ const Core::HID::NpadIdType npad_id;
+
+ DeviceState device_state{DeviceState::Unaviable};
KernelHelpers::ServiceContext service_context;
- Kernel::KEvent* nfc_tag_load;
- AmiiboFile amiibo{};
+ Kernel::KEvent* activate_event;
+ Kernel::KEvent* deactivate_event;
+ NTAG215File tag_data{};
+ s32 protocol;
+ bool is_application_area_initialized{};
+ u32 application_area_id;
+ std::vector<u8> application_area_data;
};
};
+class IUser final : public ServiceFramework<IUser> {
+public:
+ explicit IUser(Module::Interface& nfp_interface_, Core::System& system_);
+
+private:
+ void Initialize(Kernel::HLERequestContext& ctx);
+ void Finalize(Kernel::HLERequestContext& ctx);
+ void ListDevices(Kernel::HLERequestContext& ctx);
+ void StartDetection(Kernel::HLERequestContext& ctx);
+ void StopDetection(Kernel::HLERequestContext& ctx);
+ void Mount(Kernel::HLERequestContext& ctx);
+ void Unmount(Kernel::HLERequestContext& ctx);
+ void OpenApplicationArea(Kernel::HLERequestContext& ctx);
+ void GetApplicationArea(Kernel::HLERequestContext& ctx);
+ void SetApplicationArea(Kernel::HLERequestContext& ctx);
+ void CreateApplicationArea(Kernel::HLERequestContext& ctx);
+ void GetTagInfo(Kernel::HLERequestContext& ctx);
+ void GetRegisterInfo(Kernel::HLERequestContext& ctx);
+ void GetCommonInfo(Kernel::HLERequestContext& ctx);
+ void GetModelInfo(Kernel::HLERequestContext& ctx);
+ void AttachActivateEvent(Kernel::HLERequestContext& ctx);
+ void AttachDeactivateEvent(Kernel::HLERequestContext& ctx);
+ void GetState(Kernel::HLERequestContext& ctx);
+ void GetDeviceState(Kernel::HLERequestContext& ctx);
+ void GetNpadId(Kernel::HLERequestContext& ctx);
+ void GetApplicationAreaSize(Kernel::HLERequestContext& ctx);
+ void AttachAvailabilityChangeEvent(Kernel::HLERequestContext& ctx);
+
+ KernelHelpers::ServiceContext service_context;
+
+ // TODO(german77): We should have a vector of interfaces
+ Module::Interface& nfp_interface;
+
+ State state{State::NonInitialized};
+ Kernel::KEvent* availability_change_event;
+};
+
void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system);
} // namespace Service::NFP
diff --git a/src/core/hle/service/ns/pdm_qry.cpp b/src/core/hle/service/ns/pdm_qry.cpp
index e2fab5c3f..36ce46353 100644
--- a/src/core/hle/service/ns/pdm_qry.cpp
+++ b/src/core/hle/service/ns/pdm_qry.cpp
@@ -59,7 +59,7 @@ void PDM_QRY::QueryPlayStatisticsByApplicationIdAndUserAccountId(Kernel::HLERequ
LOG_WARNING(Service_NS,
"(STUBBED) called. unknown={}. application_id=0x{:016X}, user_account_uid=0x{}",
- unknown, application_id, user_account_uid.Format());
+ unknown, application_id, user_account_uid.RawString());
IPC::ResponseBuilder rb{ctx, 12};
rb.Push(ResultSuccess);
diff --git a/src/core/hle/service/pm/pm.cpp b/src/core/hle/service/pm/pm.cpp
index 277abc17a..057666021 100644
--- a/src/core/hle/service/pm/pm.cpp
+++ b/src/core/hle/service/pm/pm.cpp
@@ -91,6 +91,8 @@ public:
{4, &DebugMonitor::GetApplicationProcessId, "GetApplicationProcessId"},
{5, nullptr, "HookToCreateApplicationProgress"},
{6, nullptr, "ClearHook"},
+ {65000, &DebugMonitor::AtmosphereGetProcessInfo, "AtmosphereGetProcessInfo"},
+ {65001, nullptr, "AtmosphereGetCurrentLimitInfo"},
};
// clang-format on
@@ -125,6 +127,49 @@ private:
GetApplicationPidGeneric(ctx, kernel.GetProcessList());
}
+ void AtmosphereGetProcessInfo(Kernel::HLERequestContext& ctx) {
+ // https://github.com/Atmosphere-NX/Atmosphere/blob/master/stratosphere/pm/source/impl/pm_process_manager.cpp#L614
+ // This implementation is incomplete; only a handle to the process is returned.
+ IPC::RequestParser rp{ctx};
+ const auto pid = rp.PopRaw<u64>();
+
+ LOG_WARNING(Service_PM, "(Partial Implementation) called, pid={:016X}", pid);
+
+ const auto process = SearchProcessList(kernel.GetProcessList(), [pid](const auto& proc) {
+ return proc->GetProcessID() == pid;
+ });
+
+ if (!process.has_value()) {
+ IPC::ResponseBuilder rb{ctx, 2};
+ rb.Push(ResultProcessNotFound);
+ return;
+ }
+
+ struct ProgramLocation {
+ u64 program_id;
+ u8 storage_id;
+ };
+ static_assert(sizeof(ProgramLocation) == 0x10, "ProgramLocation has an invalid size");
+
+ struct OverrideStatus {
+ u64 keys_held;
+ u64 flags;
+ };
+ static_assert(sizeof(OverrideStatus) == 0x10, "OverrideStatus has an invalid size");
+
+ OverrideStatus override_status{};
+ ProgramLocation program_location{
+ .program_id = (*process)->GetProgramID(),
+ .storage_id = 0,
+ };
+
+ IPC::ResponseBuilder rb{ctx, 10, 1};
+ rb.Push(ResultSuccess);
+ rb.PushCopyObjects(*process);
+ rb.PushRaw(program_location);
+ rb.PushRaw(override_status);
+ }
+
const Kernel::KernelCore& kernel;
};
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index f54e6fe56..eb1138313 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -39,6 +39,7 @@
#include "core/hle/service/mig/mig.h"
#include "core/hle/service/mii/mii.h"
#include "core/hle/service/mm/mm_u.h"
+#include "core/hle/service/mnpp/mnpp_app.h"
#include "core/hle/service/ncm/ncm.h"
#include "core/hle/service/nfc/nfc.h"
#include "core/hle/service/nfp/nfp.h"
@@ -265,6 +266,7 @@ Services::Services(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system
Migration::InstallInterfaces(*sm, system);
Mii::InstallInterfaces(*sm, system);
MM::InstallInterfaces(*sm, system);
+ MNPP::InstallInterfaces(*sm, system);
NCM::InstallInterfaces(*sm, system);
NFC::InstallInterfaces(*sm, system);
NFP::InstallInterfaces(*sm, system);
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp
index eaa172595..695a1faa6 100644
--- a/src/core/hle/service/sm/sm.cpp
+++ b/src/core/hle/service/sm/sm.cpp
@@ -81,6 +81,8 @@ ResultVal<Kernel::KPort*> ServiceManager::GetServicePort(const std::string& name
}
auto* port = Kernel::KPort::Create(kernel);
+ SCOPE_EXIT({ port->Close(); });
+
port->Initialize(ServerSessionCountMax, false, name);
auto handler = it->second;
port->GetServerPort().SetSessionHandler(std::move(handler));
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index f83272633..3dbac5a23 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -569,9 +569,9 @@ std::pair<s32, Errno> BSD::AcceptImpl(s32 fd, std::vector<u8>& write_buffer) {
new_descriptor.socket = std::move(result.socket);
new_descriptor.is_connection_based = descriptor.is_connection_based;
- ASSERT(write_buffer.size() == sizeof(SockAddrIn));
const SockAddrIn guest_addr_in = Translate(result.sockaddr_in);
- std::memcpy(write_buffer.data(), &guest_addr_in, sizeof(guest_addr_in));
+ const size_t length = std::min(sizeof(guest_addr_in), write_buffer.size());
+ std::memcpy(write_buffer.data(), &guest_addr_in, length);
return {new_fd, Errno::SUCCESS};
}
diff --git a/src/core/hle/service/time/clock_types.h b/src/core/hle/service/time/clock_types.h
index 392e16863..d0cacb80c 100644
--- a/src/core/hle/service/time/clock_types.h
+++ b/src/core/hle/service/time/clock_types.h
@@ -36,7 +36,7 @@ struct SteadyClockTimePoint {
}
static SteadyClockTimePoint GetRandom() {
- return {0, Common::UUID::Generate()};
+ return {0, Common::UUID::MakeRandom()};
}
};
static_assert(sizeof(SteadyClockTimePoint) == 0x18, "SteadyClockTimePoint is incorrect size");
diff --git a/src/core/hle/service/time/steady_clock_core.h b/src/core/hle/service/time/steady_clock_core.h
index d80a2385f..5ee2c0e0a 100644
--- a/src/core/hle/service/time/steady_clock_core.h
+++ b/src/core/hle/service/time/steady_clock_core.h
@@ -49,7 +49,7 @@ public:
}
private:
- Common::UUID clock_source_id{Common::UUID::Generate()};
+ Common::UUID clock_source_id{Common::UUID::MakeRandom()};
bool is_initialized{};
};
diff --git a/src/core/hle/service/time/time_manager.cpp b/src/core/hle/service/time/time_manager.cpp
index c1e4e6cce..00f1ae8cf 100644
--- a/src/core/hle/service/time/time_manager.cpp
+++ b/src/core/hle/service/time/time_manager.cpp
@@ -45,7 +45,7 @@ struct TimeManager::Impl final {
time_zone_content_manager{system} {
const auto system_time{Clock::TimeSpanType::FromSeconds(GetExternalRtcValue())};
- SetupStandardSteadyClock(system, Common::UUID::Generate(), system_time, {}, {});
+ SetupStandardSteadyClock(system, Common::UUID::MakeRandom(), system_time, {}, {});
SetupStandardLocalSystemClock(system, {}, system_time.ToSeconds());
Clock::SystemClockContext clock_context{};
diff --git a/src/core/hle/service/vi/display/vi_display.h b/src/core/hle/service/vi/display/vi_display.h
index 0979fc421..329f4ba86 100644
--- a/src/core/hle/service/vi/display/vi_display.h
+++ b/src/core/hle/service/vi/display/vi_display.h
@@ -28,10 +28,10 @@ class Layer;
/// Represents a single display type
class Display {
+public:
YUZU_NON_COPYABLE(Display);
YUZU_NON_MOVEABLE(Display);
-public:
/// Constructs a display with a given unique ID and name.
///
/// @param id The unique ID for this display.
diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h
index 7b1bac3f7..8b6b3b68f 100644
--- a/src/core/loader/loader.h
+++ b/src/core/loader/loader.h
@@ -11,6 +11,7 @@
#include <utility>
#include <vector>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/file_sys/control_metadata.h"
#include "core/file_sys/vfs.h"
@@ -139,8 +140,11 @@ std::string GetResultStatusString(ResultStatus status);
std::ostream& operator<<(std::ostream& os, ResultStatus status);
/// Interface for loading an application
-class AppLoader : NonCopyable {
+class AppLoader {
public:
+ YUZU_NON_COPYABLE(AppLoader);
+ YUZU_NON_MOVEABLE(AppLoader);
+
struct LoadParameters {
s32 main_thread_priority;
u64 main_thread_stack_size;
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 88d6ec908..28d30eee2 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -39,8 +39,7 @@ struct Memory::Impl {
void MapMemoryRegion(Common::PageTable& page_table, VAddr base, u64 size, PAddr target) {
ASSERT_MSG((size & PAGE_MASK) == 0, "non-page aligned size: {:016X}", size);
ASSERT_MSG((base & PAGE_MASK) == 0, "non-page aligned base: {:016X}", base);
- ASSERT_MSG(target >= DramMemoryMap::Base && target < DramMemoryMap::End,
- "Out of bounds target: {:016X}", target);
+ ASSERT_MSG(target >= DramMemoryMap::Base, "Out of bounds target: {:016X}", target);
MapPages(page_table, base / PAGE_SIZE, size / PAGE_SIZE, target, Common::PageType::Memory);
if (Settings::IsFastmemEnabled()) {
diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp
index 7ab4540a8..155caae42 100644
--- a/src/input_common/drivers/gc_adapter.cpp
+++ b/src/input_common/drivers/gc_adapter.cpp
@@ -248,7 +248,7 @@ bool GCAdapter::Setup() {
std::size_t port = 0;
for (GCController& pad : pads) {
pad.identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = port++,
.pad = 0,
};
diff --git a/src/input_common/drivers/keyboard.cpp b/src/input_common/drivers/keyboard.cpp
index 4c1e5bbec..59e3d9cc0 100644
--- a/src/input_common/drivers/keyboard.cpp
+++ b/src/input_common/drivers/keyboard.cpp
@@ -9,17 +9,17 @@
namespace InputCommon {
constexpr PadIdentifier key_identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = 0,
.pad = 0,
};
constexpr PadIdentifier keyboard_key_identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = 1,
.pad = 0,
};
constexpr PadIdentifier keyboard_modifier_identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = 1,
.pad = 1,
};
diff --git a/src/input_common/drivers/mouse.cpp b/src/input_common/drivers/mouse.cpp
index d8ae7f0c1..3c9a4e747 100644
--- a/src/input_common/drivers/mouse.cpp
+++ b/src/input_common/drivers/mouse.cpp
@@ -20,7 +20,7 @@ constexpr int motion_wheel_y = 4;
constexpr int touch_axis_x = 10;
constexpr int touch_axis_y = 11;
constexpr PadIdentifier identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = 0,
.pad = 0,
};
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp
index 577bf5c31..c17ea305e 100644
--- a/src/input_common/drivers/sdl_driver.cpp
+++ b/src/input_common/drivers/sdl_driver.cpp
@@ -175,23 +175,23 @@ public:
return false;
}
- BatteryLevel GetBatteryLevel() {
+ Common::Input::BatteryLevel GetBatteryLevel() {
const auto level = SDL_JoystickCurrentPowerLevel(sdl_joystick.get());
switch (level) {
case SDL_JOYSTICK_POWER_EMPTY:
- return BatteryLevel::Empty;
+ return Common::Input::BatteryLevel::Empty;
case SDL_JOYSTICK_POWER_LOW:
- return BatteryLevel::Critical;
+ return Common::Input::BatteryLevel::Low;
case SDL_JOYSTICK_POWER_MEDIUM:
- return BatteryLevel::Low;
+ return Common::Input::BatteryLevel::Medium;
case SDL_JOYSTICK_POWER_FULL:
- return BatteryLevel::Medium;
case SDL_JOYSTICK_POWER_MAX:
- return BatteryLevel::Full;
- case SDL_JOYSTICK_POWER_UNKNOWN:
+ return Common::Input::BatteryLevel::Full;
case SDL_JOYSTICK_POWER_WIRED:
+ return Common::Input::BatteryLevel::Charging;
+ case SDL_JOYSTICK_POWER_UNKNOWN:
default:
- return BatteryLevel::Charging;
+ return Common::Input::BatteryLevel::None;
}
}
@@ -352,6 +352,8 @@ void SDLDriver::HandleGameControllerEvent(const SDL_Event& event) {
if (const auto joystick = GetSDLJoystickBySDLID(event.jbutton.which)) {
const PadIdentifier identifier = joystick->GetPadIdentifier();
SetButton(identifier, event.jbutton.button, true);
+ // Battery doesn't trigger an event so just update every button press
+ SetBattery(identifier, joystick->GetBatteryLevel());
}
break;
}
@@ -503,7 +505,7 @@ std::vector<Common::ParamPackage> SDLDriver::GetInputDevices() const {
Common::Input::VibrationError SDLDriver::SetRumble(
const PadIdentifier& identifier, const Common::Input::VibrationStatus& vibration) {
const auto joystick =
- GetSDLJoystickByGUID(identifier.guid.Format(), static_cast<int>(identifier.port));
+ GetSDLJoystickByGUID(identifier.guid.RawString(), static_cast<int>(identifier.port));
const auto process_amplitude_exp = [](f32 amplitude, f32 factor) {
return (amplitude + std::pow(amplitude, factor)) * 0.5f * 0xFFFF;
};
@@ -600,7 +602,7 @@ Common::ParamPackage SDLDriver::BuildParamPackageForAnalog(PadIdentifier identif
Common::ParamPackage params;
params.Set("engine", GetEngineName());
params.Set("port", static_cast<int>(identifier.port));
- params.Set("guid", identifier.guid.Format());
+ params.Set("guid", identifier.guid.RawString());
params.Set("axis_x", axis_x);
params.Set("axis_y", axis_y);
params.Set("offset_x", offset_x);
@@ -812,7 +814,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p
PreSetAxis(identifier, binding_left_x.value.axis);
PreSetAxis(identifier, binding_left_y.value.axis);
const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis);
- const auto left_offset_y = -GetAxis(identifier, binding_left_y.value.axis);
+ const auto left_offset_y = GetAxis(identifier, binding_left_y.value.axis);
mapping.insert_or_assign(Settings::NativeAnalog::LStick,
BuildParamPackageForAnalog(identifier, binding_left_x.value.axis,
binding_left_y.value.axis,
@@ -823,7 +825,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p
PreSetAxis(identifier, binding_left_x.value.axis);
PreSetAxis(identifier, binding_left_y.value.axis);
const auto left_offset_x = -GetAxis(identifier, binding_left_x.value.axis);
- const auto left_offset_y = -GetAxis(identifier, binding_left_y.value.axis);
+ const auto left_offset_y = GetAxis(identifier, binding_left_y.value.axis);
mapping.insert_or_assign(Settings::NativeAnalog::LStick,
BuildParamPackageForAnalog(identifier, binding_left_x.value.axis,
binding_left_y.value.axis,
@@ -838,7 +840,7 @@ AnalogMapping SDLDriver::GetAnalogMappingForDevice(const Common::ParamPackage& p
PreSetAxis(identifier, binding_right_x.value.axis);
PreSetAxis(identifier, binding_right_y.value.axis);
const auto right_offset_x = -GetAxis(identifier, binding_right_x.value.axis);
- const auto right_offset_y = -GetAxis(identifier, binding_right_y.value.axis);
+ const auto right_offset_y = GetAxis(identifier, binding_right_y.value.axis);
mapping.insert_or_assign(Settings::NativeAnalog::RStick,
BuildParamPackageForAnalog(identifier, binding_right_x.value.axis,
binding_right_y.value.axis, right_offset_x,
diff --git a/src/input_common/drivers/touch_screen.cpp b/src/input_common/drivers/touch_screen.cpp
index 880781825..30c727df4 100644
--- a/src/input_common/drivers/touch_screen.cpp
+++ b/src/input_common/drivers/touch_screen.cpp
@@ -8,7 +8,7 @@
namespace InputCommon {
constexpr PadIdentifier identifier = {
- .guid = Common::UUID{Common::INVALID_UUID},
+ .guid = Common::UUID{},
.port = 0,
.pad = 0,
};
diff --git a/src/input_common/drivers/udp_client.cpp b/src/input_common/drivers/udp_client.cpp
index 333173e3d..9780ead10 100644
--- a/src/input_common/drivers/udp_client.cpp
+++ b/src/input_common/drivers/udp_client.cpp
@@ -192,22 +192,22 @@ std::size_t UDPClient::GetClientNumber(std::string_view host, u16 port) const {
return MAX_UDP_CLIENTS;
}
-BatteryLevel UDPClient::GetBatteryLevel(Response::Battery battery) const {
+Common::Input::BatteryLevel UDPClient::GetBatteryLevel(Response::Battery battery) const {
switch (battery) {
case Response::Battery::Dying:
- return BatteryLevel::Empty;
+ return Common::Input::BatteryLevel::Empty;
case Response::Battery::Low:
- return BatteryLevel::Critical;
+ return Common::Input::BatteryLevel::Critical;
case Response::Battery::Medium:
- return BatteryLevel::Low;
+ return Common::Input::BatteryLevel::Low;
case Response::Battery::High:
- return BatteryLevel::Medium;
+ return Common::Input::BatteryLevel::Medium;
case Response::Battery::Full:
case Response::Battery::Charged:
- return BatteryLevel::Full;
+ return Common::Input::BatteryLevel::Full;
case Response::Battery::Charging:
default:
- return BatteryLevel::Charging;
+ return Common::Input::BatteryLevel::Charging;
}
}
@@ -353,7 +353,7 @@ PadIdentifier UDPClient::GetPadIdentifier(std::size_t pad_index) const {
Common::UUID UDPClient::GetHostUUID(const std::string& host) const {
const auto ip = boost::asio::ip::make_address_v4(host);
- const auto hex_host = fmt::format("{:06x}", ip.to_uint());
+ const auto hex_host = fmt::format("00000000-0000-0000-0000-0000{:06x}", ip.to_uint());
return Common::UUID{hex_host};
}
@@ -385,7 +385,7 @@ std::vector<Common::ParamPackage> UDPClient::GetInputDevices() const {
Common::ParamPackage identifier{};
identifier.Set("engine", GetEngineName());
identifier.Set("display", fmt::format("UDP Controller {}", pad_identifier.pad));
- identifier.Set("guid", pad_identifier.guid.Format());
+ identifier.Set("guid", pad_identifier.guid.RawString());
identifier.Set("port", static_cast<int>(pad_identifier.port));
identifier.Set("pad", static_cast<int>(pad_identifier.pad));
devices.emplace_back(identifier);
diff --git a/src/input_common/drivers/udp_client.h b/src/input_common/drivers/udp_client.h
index e9c178139..c7cc7d846 100644
--- a/src/input_common/drivers/udp_client.h
+++ b/src/input_common/drivers/udp_client.h
@@ -126,7 +126,7 @@ private:
struct ClientConnection {
ClientConnection();
~ClientConnection();
- Common::UUID uuid{"7F000001"};
+ Common::UUID uuid{"00000000-0000-0000-0000-00007F000001"};
std::string host{"127.0.0.1"};
u16 port{26760};
s8 active{-1};
@@ -141,7 +141,7 @@ private:
std::size_t GetClientNumber(std::string_view host, u16 port) const;
// Translates UDP battery level to input engine battery level
- BatteryLevel GetBatteryLevel(Response::Battery battery) const;
+ Common::Input::BatteryLevel GetBatteryLevel(Response::Battery battery) const;
void OnVersion(Response::Version);
void OnPortInfo(Response::PortInfo);
diff --git a/src/input_common/helpers/stick_from_buttons.cpp b/src/input_common/helpers/stick_from_buttons.cpp
index e23394f5f..31e6f62ab 100644
--- a/src/input_common/helpers/stick_from_buttons.cpp
+++ b/src/input_common/helpers/stick_from_buttons.cpp
@@ -167,12 +167,34 @@ public:
}
void UpdateModButtonStatus(const Common::Input::CallbackStatus& button_callback) {
- modifier_status = button_callback.button_status.value;
+ const auto& new_status = button_callback.button_status;
+ const bool new_button_value = new_status.inverted ? !new_status.value : new_status.value;
+ modifier_status.toggle = new_status.toggle;
+
+ // Update button status with current
+ if (!modifier_status.toggle) {
+ modifier_status.locked = false;
+ if (modifier_status.value != new_button_value) {
+ modifier_status.value = new_button_value;
+ }
+ } else {
+ // Toggle button and lock status
+ if (new_button_value && !modifier_status.locked) {
+ modifier_status.locked = true;
+ modifier_status.value = !modifier_status.value;
+ }
+
+ // Unlock button ready for next press
+ if (!new_button_value && modifier_status.locked) {
+ modifier_status.locked = false;
+ }
+ }
+
UpdateStatus();
}
void UpdateStatus() {
- const float coef = modifier_status ? modifier_scale : 1.0f;
+ const float coef = modifier_status.value ? modifier_scale : 1.0f;
bool r = right_status;
bool l = left_status;
@@ -266,7 +288,7 @@ public:
if (down_status) {
--y;
}
- const float coef = modifier_status ? modifier_scale : 1.0f;
+ const float coef = modifier_status.value ? modifier_scale : 1.0f;
status.x.raw_value = static_cast<float>(x) * coef * (y == 0 ? 1.0f : SQRT_HALF);
status.y.raw_value = static_cast<float>(y) * coef * (x == 0 ? 1.0f : SQRT_HALF);
return status;
@@ -287,9 +309,9 @@ private:
bool down_status{};
bool left_status{};
bool right_status{};
- bool modifier_status{};
float last_x_axis_value{};
float last_y_axis_value{};
+ Common::Input::ButtonStatus modifier_status{};
const Common::Input::AnalogProperties properties{0.0f, 1.0f, 0.5f, 0.0f, false};
std::chrono::time_point<std::chrono::steady_clock> last_update;
};
diff --git a/src/input_common/helpers/touch_from_buttons.cpp b/src/input_common/helpers/touch_from_buttons.cpp
index ece1e3b32..f1b57d03a 100644
--- a/src/input_common/helpers/touch_from_buttons.cpp
+++ b/src/input_common/helpers/touch_from_buttons.cpp
@@ -4,7 +4,6 @@
#include <algorithm>
#include "common/settings.h"
-#include "core/frontend/framebuffer_layout.h"
#include "input_common/helpers/touch_from_buttons.h"
namespace InputCommon {
diff --git a/src/input_common/input_engine.cpp b/src/input_common/input_engine.cpp
index 0508b408d..7adf7e3d7 100644
--- a/src/input_common/input_engine.cpp
+++ b/src/input_common/input_engine.cpp
@@ -70,7 +70,7 @@ void InputEngine::SetAxis(const PadIdentifier& identifier, int axis, f32 value)
TriggerOnAxisChange(identifier, axis, value);
}
-void InputEngine::SetBattery(const PadIdentifier& identifier, BatteryLevel value) {
+void InputEngine::SetBattery(const PadIdentifier& identifier, Common::Input::BatteryLevel value) {
{
std::lock_guard lock{mutex};
ControllerData& controller = controller_list.at(identifier);
@@ -96,7 +96,7 @@ bool InputEngine::GetButton(const PadIdentifier& identifier, int button) const {
std::lock_guard lock{mutex};
const auto controller_iter = controller_list.find(identifier);
if (controller_iter == controller_list.cend()) {
- LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
+ LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(),
identifier.pad, identifier.port);
return false;
}
@@ -113,7 +113,7 @@ bool InputEngine::GetHatButton(const PadIdentifier& identifier, int button, u8 d
std::lock_guard lock{mutex};
const auto controller_iter = controller_list.find(identifier);
if (controller_iter == controller_list.cend()) {
- LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
+ LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(),
identifier.pad, identifier.port);
return false;
}
@@ -130,7 +130,7 @@ f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const {
std::lock_guard lock{mutex};
const auto controller_iter = controller_list.find(identifier);
if (controller_iter == controller_list.cend()) {
- LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
+ LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(),
identifier.pad, identifier.port);
return 0.0f;
}
@@ -143,13 +143,13 @@ f32 InputEngine::GetAxis(const PadIdentifier& identifier, int axis) const {
return axis_iter->second;
}
-BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const {
+Common::Input::BatteryLevel InputEngine::GetBattery(const PadIdentifier& identifier) const {
std::lock_guard lock{mutex};
const auto controller_iter = controller_list.find(identifier);
if (controller_iter == controller_list.cend()) {
- LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
+ LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(),
identifier.pad, identifier.port);
- return BatteryLevel::Charging;
+ return Common::Input::BatteryLevel::Charging;
}
const ControllerData& controller = controller_iter->second;
return controller.battery;
@@ -159,7 +159,7 @@ BasicMotion InputEngine::GetMotion(const PadIdentifier& identifier, int motion)
std::lock_guard lock{mutex};
const auto controller_iter = controller_list.find(identifier);
if (controller_iter == controller_list.cend()) {
- LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.Format(),
+ LOG_ERROR(Input, "Invalid identifier guid={}, pad={}, port={}", identifier.guid.RawString(),
identifier.pad, identifier.port);
return {};
}
@@ -270,7 +270,7 @@ void InputEngine::TriggerOnAxisChange(const PadIdentifier& identifier, int axis,
}
void InputEngine::TriggerOnBatteryChange(const PadIdentifier& identifier,
- [[maybe_unused]] BatteryLevel value) {
+ [[maybe_unused]] Common::Input::BatteryLevel value) {
std::lock_guard lock{mutex_callback};
for (const auto& poller_pair : callback_list) {
const InputIdentifier& poller = poller_pair.second;
diff --git a/src/input_common/input_engine.h b/src/input_common/input_engine.h
index fe2faee5a..f44e0799b 100644
--- a/src/input_common/input_engine.h
+++ b/src/input_common/input_engine.h
@@ -16,7 +16,7 @@
// Pad Identifier of data source
struct PadIdentifier {
- Common::UUID guid{Common::INVALID_UUID};
+ Common::UUID guid{};
std::size_t port{};
std::size_t pad{};
@@ -34,16 +34,6 @@ struct BasicMotion {
u64 delta_timestamp{};
};
-// Stages of a battery charge
-enum class BatteryLevel {
- Empty,
- Critical,
- Low,
- Medium,
- Full,
- Charging,
-};
-
// Types of input that are stored in the engine
enum class EngineInputType {
None,
@@ -59,7 +49,7 @@ namespace std {
template <>
struct hash<PadIdentifier> {
size_t operator()(const PadIdentifier& pad_id) const noexcept {
- u64 hash_value = pad_id.guid.uuid[1] ^ pad_id.guid.uuid[0];
+ u64 hash_value = pad_id.guid.Hash();
hash_value ^= (static_cast<u64>(pad_id.port) << 32);
hash_value ^= static_cast<u64>(pad_id.pad);
return static_cast<size_t>(hash_value);
@@ -178,7 +168,7 @@ public:
bool GetButton(const PadIdentifier& identifier, int button) const;
bool GetHatButton(const PadIdentifier& identifier, int button, u8 direction) const;
f32 GetAxis(const PadIdentifier& identifier, int axis) const;
- BatteryLevel GetBattery(const PadIdentifier& identifier) const;
+ Common::Input::BatteryLevel GetBattery(const PadIdentifier& identifier) const;
BasicMotion GetMotion(const PadIdentifier& identifier, int motion) const;
int SetCallback(InputIdentifier input_identifier);
@@ -189,7 +179,7 @@ protected:
void SetButton(const PadIdentifier& identifier, int button, bool value);
void SetHatButton(const PadIdentifier& identifier, int button, u8 value);
void SetAxis(const PadIdentifier& identifier, int axis, f32 value);
- void SetBattery(const PadIdentifier& identifier, BatteryLevel value);
+ void SetBattery(const PadIdentifier& identifier, Common::Input::BatteryLevel value);
void SetMotion(const PadIdentifier& identifier, int motion, const BasicMotion& value);
virtual std::string GetHatButtonName([[maybe_unused]] u8 direction_value) const {
@@ -202,13 +192,13 @@ private:
std::unordered_map<int, u8> hat_buttons;
std::unordered_map<int, float> axes;
std::unordered_map<int, BasicMotion> motions;
- BatteryLevel battery{};
+ Common::Input::BatteryLevel battery{};
};
void TriggerOnButtonChange(const PadIdentifier& identifier, int button, bool value);
void TriggerOnHatButtonChange(const PadIdentifier& identifier, int button, u8 value);
void TriggerOnAxisChange(const PadIdentifier& identifier, int axis, f32 value);
- void TriggerOnBatteryChange(const PadIdentifier& identifier, BatteryLevel value);
+ void TriggerOnBatteryChange(const PadIdentifier& identifier, Common::Input::BatteryLevel value);
void TriggerOnMotionChange(const PadIdentifier& identifier, int motion,
const BasicMotion& value);
diff --git a/src/input_common/input_mapping.cpp b/src/input_common/input_mapping.cpp
index a7a6ad8c2..fb78093b8 100644
--- a/src/input_common/input_mapping.cpp
+++ b/src/input_common/input_mapping.cpp
@@ -57,7 +57,7 @@ void MappingFactory::RegisterButton(const MappingData& data) {
Common::ParamPackage new_input;
new_input.Set("engine", data.engine);
if (data.pad.guid.IsValid()) {
- new_input.Set("guid", data.pad.guid.Format());
+ new_input.Set("guid", data.pad.guid.RawString());
}
new_input.Set("port", static_cast<int>(data.pad.port));
new_input.Set("pad", static_cast<int>(data.pad.pad));
@@ -93,7 +93,7 @@ void MappingFactory::RegisterStick(const MappingData& data) {
Common::ParamPackage new_input;
new_input.Set("engine", data.engine);
if (data.pad.guid.IsValid()) {
- new_input.Set("guid", data.pad.guid.Format());
+ new_input.Set("guid", data.pad.guid.RawString());
}
new_input.Set("port", static_cast<int>(data.pad.port));
new_input.Set("pad", static_cast<int>(data.pad.pad));
@@ -138,7 +138,7 @@ void MappingFactory::RegisterMotion(const MappingData& data) {
Common::ParamPackage new_input;
new_input.Set("engine", data.engine);
if (data.pad.guid.IsValid()) {
- new_input.Set("guid", data.pad.guid.Format());
+ new_input.Set("guid", data.pad.guid.RawString());
}
new_input.Set("port", static_cast<int>(data.pad.port));
new_input.Set("pad", static_cast<int>(data.pad.pad));
diff --git a/src/input_common/input_poller.cpp b/src/input_common/input_poller.cpp
index 2f3c0735a..82b585ff2 100644
--- a/src/input_common/input_poller.cpp
+++ b/src/input_common/input_poller.cpp
@@ -181,7 +181,7 @@ public:
.raw_value = input_engine->GetAxis(identifier, axis_y),
.properties = properties_y,
};
- // This is a workaround too keep compatibility with old yuzu versions. Vertical axis is
+ // This is a workaround to keep compatibility with old yuzu versions. Vertical axis is
// inverted on SDL compared to Nintendo
if (invert_axis_y) {
status.y.raw_value = -status.y.raw_value;
@@ -470,7 +470,7 @@ public:
}
Common::Input::BatteryStatus GetStatus() const {
- return static_cast<Common::Input::BatteryLevel>(input_engine->GetBattery(identifier));
+ return input_engine->GetBattery(identifier);
}
void ForceUpdate() override {
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
index b48007856..5efbe4e6f 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_instructions.h
@@ -372,6 +372,8 @@ void EmitSharedAtomicExchange32(EmitContext& ctx, IR::Inst& inst, ScalarU32 poin
ScalarU32 value);
void EmitSharedAtomicExchange64(EmitContext& ctx, IR::Inst& inst, ScalarU32 pointer_offset,
Register value);
+void EmitSharedAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, ScalarU32 pointer_offset,
+ Register value);
void EmitStorageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
ScalarU32 offset, ScalarU32 value);
void EmitStorageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
@@ -412,6 +414,24 @@ void EmitStorageAtomicXor64(EmitContext& ctx, IR::Inst& inst, const IR::Value& b
ScalarU32 offset, Register value);
void EmitStorageAtomicExchange64(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
ScalarU32 offset, Register value);
+void EmitStorageAtomicIAdd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicSMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicUMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicSMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicUMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicAnd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicOr32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicXor32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
+void EmitStorageAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ ScalarU32 offset, Register value);
void EmitStorageAtomicAddF32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
ScalarU32 offset, ScalarF32 value);
void EmitStorageAtomicAddF16x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
@@ -448,6 +468,17 @@ void EmitGlobalAtomicAnd64(EmitContext& ctx);
void EmitGlobalAtomicOr64(EmitContext& ctx);
void EmitGlobalAtomicXor64(EmitContext& ctx);
void EmitGlobalAtomicExchange64(EmitContext& ctx);
+void EmitGlobalAtomicIAdd32x2(EmitContext& ctx);
+void EmitGlobalAtomicSMin32x2(EmitContext& ctx);
+void EmitGlobalAtomicUMin32x2(EmitContext& ctx);
+void EmitGlobalAtomicSMax32x2(EmitContext& ctx);
+void EmitGlobalAtomicUMax32x2(EmitContext& ctx);
+void EmitGlobalAtomicInc32x2(EmitContext& ctx);
+void EmitGlobalAtomicDec32x2(EmitContext& ctx);
+void EmitGlobalAtomicAnd32x2(EmitContext& ctx);
+void EmitGlobalAtomicOr32x2(EmitContext& ctx);
+void EmitGlobalAtomicXor32x2(EmitContext& ctx);
+void EmitGlobalAtomicExchange32x2(EmitContext& ctx);
void EmitGlobalAtomicAddF32(EmitContext& ctx);
void EmitGlobalAtomicAddF16x2(EmitContext& ctx);
void EmitGlobalAtomicAddF32x2(EmitContext& ctx);
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
index f135b67f5..f0fd94a28 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
@@ -311,6 +311,13 @@ void EmitSharedAtomicExchange64(EmitContext& ctx, IR::Inst& inst, ScalarU32 poin
ctx.LongAdd("ATOMS.EXCH.U64 {}.x,{},shared_mem[{}];", inst, value, pointer_offset);
}
+void EmitSharedAtomicExchange32x2([[maybe_unused]] EmitContext& ctx,
+ [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] ScalarU32 pointer_offset,
+ [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
void EmitStorageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
ScalarU32 offset, ScalarU32 value) {
Atom(ctx, inst, binding, offset, value, "ADD", "U32");
@@ -411,6 +418,62 @@ void EmitStorageAtomicExchange64(EmitContext& ctx, IR::Inst& inst, const IR::Val
Atom(ctx, inst, binding, offset, value, "EXCH", "U64");
}
+void EmitStorageAtomicIAdd32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicSMin32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicUMin32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicSMax32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicUMax32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicAnd32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicOr32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicXor32x2([[maybe_unused]] EmitContext& ctx, [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset, [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitStorageAtomicExchange32x2([[maybe_unused]] EmitContext& ctx,
+ [[maybe_unused]] IR::Inst& inst,
+ [[maybe_unused]] const IR::Value& binding,
+ [[maybe_unused]] ScalarU32 offset,
+ [[maybe_unused]] Register value) {
+ throw NotImplementedException("GLASM instruction");
+}
+
void EmitStorageAtomicAddF32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
ScalarU32 offset, ScalarF32 value) {
Atom(ctx, inst, binding, offset, value, "ADD", "F32");
@@ -537,6 +600,50 @@ void EmitGlobalAtomicExchange64(EmitContext&) {
throw NotImplementedException("GLASM instruction");
}
+void EmitGlobalAtomicIAdd32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicSMin32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicUMin32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicSMax32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicUMax32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicInc32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicDec32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicAnd32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicOr32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicXor32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
+void EmitGlobalAtomicExchange32x2(EmitContext&) {
+ throw NotImplementedException("GLASM instruction");
+}
+
void EmitGlobalAtomicAddF32(EmitContext&) {
throw NotImplementedException("GLASM instruction");
}
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
index dc377b053..a409a7ab3 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
@@ -105,6 +105,13 @@ void EmitSharedAtomicExchange64(EmitContext& ctx, IR::Inst& inst, std::string_vi
pointer_offset, value, pointer_offset, value);
}
+void EmitSharedAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, std::string_view pointer_offset,
+ std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=uvec2(smem[{}>>2],smem[({}+4)>>2]);", inst, pointer_offset, pointer_offset);
+ ctx.Add("smem[{}>>2]={}.x;smem[({}+4)>>2]={}.y;", pointer_offset, value, pointer_offset, value);
+}
+
void EmitStorageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value) {
ctx.AddU32("{}=atomicAdd({}_ssbo{}[{}>>2],{});", inst, ctx.stage_name, binding.U32(),
@@ -265,6 +272,97 @@ void EmitStorageAtomicExchange64(EmitContext& ctx, IR::Inst& inst, const IR::Val
ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value);
}
+void EmitStorageAtomicIAdd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=uvec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]);", inst, ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset));
+ ctx.Add("{}_ssbo{}[{}>>2]+={}.x;{}_ssbo{}[({}>>2)+1]+={}.y;", ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset), value, ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicSMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]);", inst, ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset));
+ ctx.Add("for(int "
+ "i=0;i<2;++i){{{}_ssbo{}[({}>>2)+i]=uint(min(int({}_ssbo{}[({}>>2)+i]),int({}[i])));}}",
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicUMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=uvec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]);", inst, ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset));
+ ctx.Add("for(int i=0;i<2;++i){{ "
+ "{}_ssbo{}[({}>>2)+i]=min({}_ssbo{}[({}>>2)+i],{}[i]);}}",
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicSMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=ivec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]);", inst, ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset));
+ ctx.Add("for(int "
+ "i=0;i<2;++i){{{}_ssbo{}[({}>>2)+i]=uint(max(int({}_ssbo{}[({}>>2)+i]),int({}[i])));}}",
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicUMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to non-atomic");
+ ctx.AddU32x2("{}=uvec2({}_ssbo{}[{}>>2],{}_ssbo{}[({}>>2)+1]);", inst, ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name, binding.U32(),
+ ctx.var_alloc.Consume(offset));
+ ctx.Add("for(int i=0;i<2;++i){{{}_ssbo{}[({}>>2)+i]=max({}_ssbo{}[({}>>2)+i],{}[i]);}}",
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), ctx.stage_name,
+ binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicAnd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to 32x2");
+ ctx.AddU32x2("{}=uvec2(atomicAnd({}_ssbo{}[{}>>2],{}.x),atomicAnd({}_ssbo{}[({}>>2)+1],{}.y));",
+ inst, ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value,
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicOr32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to 32x2");
+ ctx.AddU32x2("{}=uvec2(atomicOr({}_ssbo{}[{}>>2],{}.x),atomicOr({}_ssbo{}[({}>>2)+1],{}.y));",
+ inst, ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value,
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicXor32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to 32x2");
+ ctx.AddU32x2("{}=uvec2(atomicXor({}_ssbo{}[{}>>2],{}.x),atomicXor({}_ssbo{}[({}>>2)+1],{}.y));",
+ inst, ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value,
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
+void EmitStorageAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value) {
+ LOG_WARNING(Shader_GLSL, "Int64 atomics not supported, fallback to 32x2");
+ ctx.AddU32x2("{}=uvec2(atomicExchange({}_ssbo{}[{}>>2],{}.x),atomicExchange({}_ssbo{}[({}>>2)+"
+ "1],{}.y));",
+ inst, ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value,
+ ctx.stage_name, binding.U32(), ctx.var_alloc.Consume(offset), value);
+}
+
void EmitStorageAtomicAddF32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value) {
SsboCasFunctionF32(ctx, inst, binding, offset, value, "CasFloatAdd");
@@ -388,6 +486,50 @@ void EmitGlobalAtomicExchange64(EmitContext&) {
throw NotImplementedException("GLSL Instrucion");
}
+void EmitGlobalAtomicIAdd32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicSMin32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicUMin32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicSMax32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicUMax32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicInc32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicDec32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicAnd32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicOr32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicXor32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
+void EmitGlobalAtomicExchange32x2(EmitContext&) {
+ throw NotImplementedException("GLSL Instrucion");
+}
+
void EmitGlobalAtomicAddF32(EmitContext&) {
throw NotImplementedException("GLSL Instrucion");
}
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
index 6cabbc717..704baddc9 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_instructions.h
@@ -442,6 +442,8 @@ void EmitSharedAtomicExchange32(EmitContext& ctx, IR::Inst& inst, std::string_vi
std::string_view value);
void EmitSharedAtomicExchange64(EmitContext& ctx, IR::Inst& inst, std::string_view pointer_offset,
std::string_view value);
+void EmitSharedAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, std::string_view pointer_offset,
+ std::string_view value);
void EmitStorageAtomicIAdd32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value);
void EmitStorageAtomicSMin32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
@@ -482,6 +484,24 @@ void EmitStorageAtomicXor64(EmitContext& ctx, IR::Inst& inst, const IR::Value& b
const IR::Value& offset, std::string_view value);
void EmitStorageAtomicExchange64(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicIAdd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicSMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicUMin32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicSMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicUMax32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicAnd32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicOr32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicXor32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
+void EmitStorageAtomicExchange32x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
+ const IR::Value& offset, std::string_view value);
void EmitStorageAtomicAddF32(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
const IR::Value& offset, std::string_view value);
void EmitStorageAtomicAddF16x2(EmitContext& ctx, IR::Inst& inst, const IR::Value& binding,
@@ -518,6 +538,17 @@ void EmitGlobalAtomicAnd64(EmitContext& ctx);
void EmitGlobalAtomicOr64(EmitContext& ctx);
void EmitGlobalAtomicXor64(EmitContext& ctx);
void EmitGlobalAtomicExchange64(EmitContext& ctx);
+void EmitGlobalAtomicIAdd32x2(EmitContext& ctx);
+void EmitGlobalAtomicSMin32x2(EmitContext& ctx);
+void EmitGlobalAtomicUMin32x2(EmitContext& ctx);
+void EmitGlobalAtomicSMax32x2(EmitContext& ctx);
+void EmitGlobalAtomicUMax32x2(EmitContext& ctx);
+void EmitGlobalAtomicInc32x2(EmitContext& ctx);
+void EmitGlobalAtomicDec32x2(EmitContext& ctx);
+void EmitGlobalAtomicAnd32x2(EmitContext& ctx);
+void EmitGlobalAtomicOr32x2(EmitContext& ctx);
+void EmitGlobalAtomicXor32x2(EmitContext& ctx);
+void EmitGlobalAtomicExchange32x2(EmitContext& ctx);
void EmitGlobalAtomicAddF32(EmitContext& ctx);
void EmitGlobalAtomicAddF16x2(EmitContext& ctx);
void EmitGlobalAtomicAddF32x2(EmitContext& ctx);
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.h b/src/shader_recompiler/backend/spirv/emit_spirv.h
index b412957c7..2b360e073 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv.h
+++ b/src/shader_recompiler/backend/spirv/emit_spirv.h
@@ -22,7 +22,7 @@ constexpr u32 NUM_TEXTURE_AND_IMAGE_SCALING_WORDS =
struct RescalingLayout {
alignas(16) std::array<u32, NUM_TEXTURE_SCALING_WORDS> rescaling_textures;
alignas(16) std::array<u32, NUM_IMAGE_SCALING_WORDS> rescaling_images;
- alignas(16) u32 down_factor;
+ u32 down_factor;
};
constexpr u32 RESCALING_LAYOUT_WORDS_OFFSET = offsetof(RescalingLayout, rescaling_textures);
constexpr u32 RESCALING_LAYOUT_DOWN_FACTOR_OFFSET = offsetof(RescalingLayout, down_factor);
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp
index 46ba52a25..d3cbb14a9 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp
@@ -82,6 +82,17 @@ Id StorageAtomicU64(EmitContext& ctx, const IR::Value& binding, const IR::Value&
ctx.OpStore(pointer, ctx.OpBitcast(ctx.U32[2], result));
return original_value;
}
+
+Id StorageAtomicU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset, Id value,
+ Id (Sirit::Module::*non_atomic_func)(Id, Id, Id)) {
+ LOG_WARNING(Shader_SPIRV, "Int64 atomics not supported, fallback to non-atomic");
+ const Id pointer{StoragePointer(ctx, ctx.storage_types.U32x2, &StorageDefinitions::U32x2,
+ binding, offset, sizeof(u32[2]))};
+ const Id original_value{ctx.OpLoad(ctx.U32[2], pointer)};
+ const Id result{(ctx.*non_atomic_func)(ctx.U32[2], value, original_value)};
+ ctx.OpStore(pointer, result);
+ return original_value;
+}
} // Anonymous namespace
Id EmitSharedAtomicIAdd32(EmitContext& ctx, Id offset, Id value) {
@@ -141,7 +152,7 @@ Id EmitSharedAtomicExchange64(EmitContext& ctx, Id offset, Id value) {
const auto [scope, semantics]{AtomicArgs(ctx)};
return ctx.OpAtomicExchange(ctx.U64, pointer, scope, semantics, value);
}
- LOG_ERROR(Shader_SPIRV, "Int64 atomics not supported, fallback to non-atomic");
+ LOG_WARNING(Shader_SPIRV, "Int64 atomics not supported, fallback to non-atomic");
const Id pointer_1{SharedPointer(ctx, offset, 0)};
const Id pointer_2{SharedPointer(ctx, offset, 1)};
const Id value_1{ctx.OpLoad(ctx.U32[1], pointer_1)};
@@ -152,6 +163,18 @@ Id EmitSharedAtomicExchange64(EmitContext& ctx, Id offset, Id value) {
return ctx.OpBitcast(ctx.U64, ctx.OpCompositeConstruct(ctx.U32[2], value_1, value_2));
}
+Id EmitSharedAtomicExchange32x2(EmitContext& ctx, Id offset, Id value) {
+ LOG_WARNING(Shader_SPIRV, "Int64 atomics not supported, fallback to non-atomic");
+ const Id pointer_1{SharedPointer(ctx, offset, 0)};
+ const Id pointer_2{SharedPointer(ctx, offset, 1)};
+ const Id value_1{ctx.OpLoad(ctx.U32[1], pointer_1)};
+ const Id value_2{ctx.OpLoad(ctx.U32[1], pointer_2)};
+ const Id new_vector{ctx.OpBitcast(ctx.U32[2], value)};
+ ctx.OpStore(pointer_1, ctx.OpCompositeExtract(ctx.U32[1], new_vector, 0U));
+ ctx.OpStore(pointer_2, ctx.OpCompositeExtract(ctx.U32[1], new_vector, 1U));
+ return ctx.OpCompositeConstruct(ctx.U32[2], value_1, value_2);
+}
+
Id EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value) {
return StorageAtomicU32(ctx, binding, offset, value, &Sirit::Module::OpAtomicIAdd);
@@ -275,6 +298,56 @@ Id EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, const
return original;
}
+Id EmitStorageAtomicIAdd32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpIAdd);
+}
+
+Id EmitStorageAtomicSMin32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpSMin);
+}
+
+Id EmitStorageAtomicUMin32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpUMin);
+}
+
+Id EmitStorageAtomicSMax32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpSMax);
+}
+
+Id EmitStorageAtomicUMax32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpUMax);
+}
+
+Id EmitStorageAtomicAnd32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpBitwiseAnd);
+}
+
+Id EmitStorageAtomicOr32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpBitwiseOr);
+}
+
+Id EmitStorageAtomicXor32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value) {
+ return StorageAtomicU32x2(ctx, binding, offset, value, &Sirit::Module::OpBitwiseXor);
+}
+
+Id EmitStorageAtomicExchange32x2(EmitContext& ctx, const IR::Value& binding,
+ const IR::Value& offset, Id value) {
+ LOG_WARNING(Shader_SPIRV, "Int64 atomics not supported, fallback to non-atomic");
+ const Id pointer{StoragePointer(ctx, ctx.storage_types.U32x2, &StorageDefinitions::U32x2,
+ binding, offset, sizeof(u32[2]))};
+ const Id original{ctx.OpLoad(ctx.U32[2], pointer)};
+ ctx.OpStore(pointer, value);
+ return original;
+}
+
Id EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value) {
const Id ssbo{ctx.ssbos[binding.U32()].U32};
@@ -418,6 +491,50 @@ Id EmitGlobalAtomicExchange64(EmitContext&) {
throw NotImplementedException("SPIR-V Instruction");
}
+Id EmitGlobalAtomicIAdd32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicSMin32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicUMin32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicSMax32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicUMax32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicInc32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicDec32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicAnd32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicOr32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicXor32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
+Id EmitGlobalAtomicExchange32x2(EmitContext&) {
+ throw NotImplementedException("SPIR-V Instruction");
+}
+
Id EmitGlobalAtomicAddF32(EmitContext&) {
throw NotImplementedException("SPIR-V Instruction");
}
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
index 8ea730c80..80b4bbd27 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
@@ -123,34 +123,36 @@ std::optional<OutAttr> OutputAttrPointer(EmitContext& ctx, IR::Attribute attr) {
}
Id GetCbuf(EmitContext& ctx, Id result_type, Id UniformDefinitions::*member_ptr, u32 element_size,
- const IR::Value& binding, const IR::Value& offset) {
+ const IR::Value& binding, const IR::Value& offset, const Id indirect_func) {
+ Id buffer_offset;
+ const Id uniform_type{ctx.uniform_types.*member_ptr};
+ if (offset.IsImmediate()) {
+ // Hardware been proved to read the aligned offset (e.g. LDC.U32 at 6 will read offset 4)
+ const Id imm_offset{ctx.Const(offset.U32() / element_size)};
+ buffer_offset = imm_offset;
+ } else if (element_size > 1) {
+ const u32 log2_element_size{static_cast<u32>(std::countr_zero(element_size))};
+ const Id shift{ctx.Const(log2_element_size)};
+ buffer_offset = ctx.OpShiftRightArithmetic(ctx.U32[1], ctx.Def(offset), shift);
+ } else {
+ buffer_offset = ctx.Def(offset);
+ }
if (!binding.IsImmediate()) {
- throw NotImplementedException("Constant buffer indexing");
+ return ctx.OpFunctionCall(result_type, indirect_func, ctx.Def(binding), buffer_offset);
}
const Id cbuf{ctx.cbufs[binding.U32()].*member_ptr};
- const Id uniform_type{ctx.uniform_types.*member_ptr};
- if (!offset.IsImmediate()) {
- Id index{ctx.Def(offset)};
- if (element_size > 1) {
- const u32 log2_element_size{static_cast<u32>(std::countr_zero(element_size))};
- const Id shift{ctx.Const(log2_element_size)};
- index = ctx.OpShiftRightArithmetic(ctx.U32[1], ctx.Def(offset), shift);
- }
- const Id access_chain{ctx.OpAccessChain(uniform_type, cbuf, ctx.u32_zero_value, index)};
- return ctx.OpLoad(result_type, access_chain);
- }
- // Hardware been proved to read the aligned offset (e.g. LDC.U32 at 6 will read offset 4)
- const Id imm_offset{ctx.Const(offset.U32() / element_size)};
- const Id access_chain{ctx.OpAccessChain(uniform_type, cbuf, ctx.u32_zero_value, imm_offset)};
+ const Id access_chain{ctx.OpAccessChain(uniform_type, cbuf, ctx.u32_zero_value, buffer_offset)};
return ctx.OpLoad(result_type, access_chain);
}
Id GetCbufU32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
- return GetCbuf(ctx, ctx.U32[1], &UniformDefinitions::U32, sizeof(u32), binding, offset);
+ return GetCbuf(ctx, ctx.U32[1], &UniformDefinitions::U32, sizeof(u32), binding, offset,
+ ctx.load_const_func_u32);
}
Id GetCbufU32x4(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
- return GetCbuf(ctx, ctx.U32[4], &UniformDefinitions::U32x4, sizeof(u32[4]), binding, offset);
+ return GetCbuf(ctx, ctx.U32[4], &UniformDefinitions::U32x4, sizeof(u32[4]), binding, offset,
+ ctx.load_const_func_u32x4);
}
Id GetCbufElement(EmitContext& ctx, Id vector, const IR::Value& offset, u32 index_offset) {
@@ -201,7 +203,8 @@ void EmitGetIndirectBranchVariable(EmitContext&) {
Id EmitGetCbufU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing && ctx.profile.support_int8) {
- const Id load{GetCbuf(ctx, ctx.U8, &UniformDefinitions::U8, sizeof(u8), binding, offset)};
+ const Id load{GetCbuf(ctx, ctx.U8, &UniformDefinitions::U8, sizeof(u8), binding, offset,
+ ctx.load_const_func_u8)};
return ctx.OpUConvert(ctx.U32[1], load);
}
Id element{};
@@ -217,7 +220,8 @@ Id EmitGetCbufU8(EmitContext& ctx, const IR::Value& binding, const IR::Value& of
Id EmitGetCbufS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing && ctx.profile.support_int8) {
- const Id load{GetCbuf(ctx, ctx.S8, &UniformDefinitions::S8, sizeof(s8), binding, offset)};
+ const Id load{GetCbuf(ctx, ctx.S8, &UniformDefinitions::S8, sizeof(s8), binding, offset,
+ ctx.load_const_func_u8)};
return ctx.OpSConvert(ctx.U32[1], load);
}
Id element{};
@@ -233,8 +237,8 @@ Id EmitGetCbufS8(EmitContext& ctx, const IR::Value& binding, const IR::Value& of
Id EmitGetCbufU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing && ctx.profile.support_int16) {
- const Id load{
- GetCbuf(ctx, ctx.U16, &UniformDefinitions::U16, sizeof(u16), binding, offset)};
+ const Id load{GetCbuf(ctx, ctx.U16, &UniformDefinitions::U16, sizeof(u16), binding, offset,
+ ctx.load_const_func_u16)};
return ctx.OpUConvert(ctx.U32[1], load);
}
Id element{};
@@ -250,8 +254,8 @@ Id EmitGetCbufU16(EmitContext& ctx, const IR::Value& binding, const IR::Value& o
Id EmitGetCbufS16(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing && ctx.profile.support_int16) {
- const Id load{
- GetCbuf(ctx, ctx.S16, &UniformDefinitions::S16, sizeof(s16), binding, offset)};
+ const Id load{GetCbuf(ctx, ctx.S16, &UniformDefinitions::S16, sizeof(s16), binding, offset,
+ ctx.load_const_func_u16)};
return ctx.OpSConvert(ctx.U32[1], load);
}
Id element{};
@@ -276,7 +280,8 @@ Id EmitGetCbufU32(EmitContext& ctx, const IR::Value& binding, const IR::Value& o
Id EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing) {
- return GetCbuf(ctx, ctx.F32[1], &UniformDefinitions::F32, sizeof(f32), binding, offset);
+ return GetCbuf(ctx, ctx.F32[1], &UniformDefinitions::F32, sizeof(f32), binding, offset,
+ ctx.load_const_func_f32);
} else {
const Id vector{GetCbufU32x4(ctx, binding, offset)};
return ctx.OpBitcast(ctx.F32[1], GetCbufElement(ctx, vector, offset, 0u));
@@ -285,8 +290,8 @@ Id EmitGetCbufF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& o
Id EmitGetCbufU32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset) {
if (ctx.profile.support_descriptor_aliasing) {
- return GetCbuf(ctx, ctx.U32[2], &UniformDefinitions::U32x2, sizeof(u32[2]), binding,
- offset);
+ return GetCbuf(ctx, ctx.U32[2], &UniformDefinitions::U32x2, sizeof(u32[2]), binding, offset,
+ ctx.load_const_func_u32x2);
} else {
const Id vector{GetCbufU32x4(ctx, binding, offset)};
return ctx.OpCompositeConstruct(ctx.U32[2], GetCbufElement(ctx, vector, offset, 0u),
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
index 887112deb..f263b41b0 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
@@ -335,6 +335,7 @@ Id EmitSharedAtomicOr32(EmitContext& ctx, Id pointer_offset, Id value);
Id EmitSharedAtomicXor32(EmitContext& ctx, Id pointer_offset, Id value);
Id EmitSharedAtomicExchange32(EmitContext& ctx, Id pointer_offset, Id value);
Id EmitSharedAtomicExchange64(EmitContext& ctx, Id pointer_offset, Id value);
+Id EmitSharedAtomicExchange32x2(EmitContext& ctx, Id pointer_offset, Id value);
Id EmitStorageAtomicIAdd32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value);
Id EmitStorageAtomicSMin32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
@@ -375,6 +376,24 @@ Id EmitStorageAtomicXor64(EmitContext& ctx, const IR::Value& binding, const IR::
Id value);
Id EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value);
+Id EmitStorageAtomicIAdd32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicSMin32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicUMin32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicSMax32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicUMax32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicAnd32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicOr32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicXor32x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
+ Id value);
+Id EmitStorageAtomicExchange32x2(EmitContext& ctx, const IR::Value& binding,
+ const IR::Value& offset, Id value);
Id EmitStorageAtomicAddF32(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
Id value);
Id EmitStorageAtomicAddF16x2(EmitContext& ctx, const IR::Value& binding, const IR::Value& offset,
@@ -411,6 +430,17 @@ Id EmitGlobalAtomicAnd64(EmitContext& ctx);
Id EmitGlobalAtomicOr64(EmitContext& ctx);
Id EmitGlobalAtomicXor64(EmitContext& ctx);
Id EmitGlobalAtomicExchange64(EmitContext& ctx);
+Id EmitGlobalAtomicIAdd32x2(EmitContext& ctx);
+Id EmitGlobalAtomicSMin32x2(EmitContext& ctx);
+Id EmitGlobalAtomicUMin32x2(EmitContext& ctx);
+Id EmitGlobalAtomicSMax32x2(EmitContext& ctx);
+Id EmitGlobalAtomicUMax32x2(EmitContext& ctx);
+Id EmitGlobalAtomicInc32x2(EmitContext& ctx);
+Id EmitGlobalAtomicDec32x2(EmitContext& ctx);
+Id EmitGlobalAtomicAnd32x2(EmitContext& ctx);
+Id EmitGlobalAtomicOr32x2(EmitContext& ctx);
+Id EmitGlobalAtomicXor32x2(EmitContext& ctx);
+Id EmitGlobalAtomicExchange32x2(EmitContext& ctx);
Id EmitGlobalAtomicAddF32(EmitContext& ctx);
Id EmitGlobalAtomicAddF16x2(EmitContext& ctx);
Id EmitGlobalAtomicAddF32x2(EmitContext& ctx);
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
index cd90c084a..aa5b6c9b7 100644
--- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
+++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
@@ -464,6 +464,7 @@ EmitContext::EmitContext(const Profile& profile_, const RuntimeInfo& runtime_inf
DefineSharedMemory(program);
DefineSharedMemoryFunctions(program);
DefineConstantBuffers(program.info, uniform_binding);
+ DefineConstantBufferIndirectFunctions(program.info);
DefineStorageBuffers(program.info, storage_binding);
DefineTextureBuffers(program.info, texture_binding);
DefineImageBuffers(program.info, image_binding);
@@ -993,7 +994,7 @@ void EmitContext::DefineConstantBuffers(const Info& info, u32& binding) {
}
return;
}
- IR::Type types{info.used_constant_buffer_types};
+ IR::Type types{info.used_constant_buffer_types | info.used_indirect_cbuf_types};
if (True(types & IR::Type::U8)) {
if (profile.support_int8) {
DefineConstBuffers(*this, info, &UniformDefinitions::U8, binding, U8, 'u', sizeof(u8));
@@ -1027,6 +1028,62 @@ void EmitContext::DefineConstantBuffers(const Info& info, u32& binding) {
binding += static_cast<u32>(info.constant_buffer_descriptors.size());
}
+void EmitContext::DefineConstantBufferIndirectFunctions(const Info& info) {
+ if (!info.uses_cbuf_indirect) {
+ return;
+ }
+ const auto make_accessor{[&](Id buffer_type, Id UniformDefinitions::*member_ptr) {
+ const Id func_type{TypeFunction(buffer_type, U32[1], U32[1])};
+ const Id func{OpFunction(buffer_type, spv::FunctionControlMask::MaskNone, func_type)};
+ const Id binding{OpFunctionParameter(U32[1])};
+ const Id offset{OpFunctionParameter(U32[1])};
+
+ AddLabel();
+
+ const Id merge_label{OpLabel()};
+ const Id uniform_type{uniform_types.*member_ptr};
+
+ std::array<Id, Info::MAX_CBUFS> buf_labels;
+ std::array<Sirit::Literal, Info::MAX_CBUFS> buf_literals;
+ for (u32 i = 0; i < Info::MAX_CBUFS; i++) {
+ buf_labels[i] = OpLabel();
+ buf_literals[i] = Sirit::Literal{i};
+ }
+ OpSelectionMerge(merge_label, spv::SelectionControlMask::MaskNone);
+ OpSwitch(binding, buf_labels[0], buf_literals, buf_labels);
+ for (u32 i = 0; i < Info::MAX_CBUFS; i++) {
+ AddLabel(buf_labels[i]);
+ const Id cbuf{cbufs[i].*member_ptr};
+ const Id access_chain{OpAccessChain(uniform_type, cbuf, u32_zero_value, offset)};
+ const Id result{OpLoad(buffer_type, access_chain)};
+ OpReturnValue(result);
+ }
+ AddLabel(merge_label);
+ OpUnreachable();
+ OpFunctionEnd();
+ return func;
+ }};
+ IR::Type types{info.used_indirect_cbuf_types};
+ if (True(types & IR::Type::U8)) {
+ load_const_func_u8 = make_accessor(U8, &UniformDefinitions::U8);
+ }
+ if (True(types & IR::Type::U16)) {
+ load_const_func_u16 = make_accessor(U16, &UniformDefinitions::U16);
+ }
+ if (True(types & IR::Type::F32)) {
+ load_const_func_f32 = make_accessor(F32[1], &UniformDefinitions::F32);
+ }
+ if (True(types & IR::Type::U32)) {
+ load_const_func_u32 = make_accessor(U32[1], &UniformDefinitions::U32);
+ }
+ if (True(types & IR::Type::U32x2)) {
+ load_const_func_u32x2 = make_accessor(U32[2], &UniformDefinitions::U32x2);
+ }
+ if (True(types & IR::Type::U32x4)) {
+ load_const_func_u32x4 = make_accessor(U32[4], &UniformDefinitions::U32x4);
+ }
+}
+
void EmitContext::DefineStorageBuffers(const Info& info, u32& binding) {
if (info.storage_buffers_descriptors.empty()) {
return;
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.h b/src/shader_recompiler/backend/spirv/spirv_emit_context.h
index f87138f7e..906a1dc2c 100644
--- a/src/shader_recompiler/backend/spirv/spirv_emit_context.h
+++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.h
@@ -294,6 +294,13 @@ public:
std::vector<Id> interfaces;
+ Id load_const_func_u8{};
+ Id load_const_func_u16{};
+ Id load_const_func_u32{};
+ Id load_const_func_f32{};
+ Id load_const_func_u32x2{};
+ Id load_const_func_u32x4{};
+
private:
void DefineCommonTypes(const Info& info);
void DefineCommonConstants();
@@ -302,6 +309,7 @@ private:
void DefineSharedMemory(const IR::Program& program);
void DefineSharedMemoryFunctions(const IR::Program& program);
void DefineConstantBuffers(const Info& info, u32& binding);
+ void DefineConstantBufferIndirectFunctions(const Info& info);
void DefineStorageBuffers(const Info& info, u32& binding);
void DefineTextureBuffers(const Info& info, u32& binding);
void DefineImageBuffers(const Info& info, u32& binding);
diff --git a/src/shader_recompiler/frontend/ir/microinstruction.cpp b/src/shader_recompiler/frontend/ir/microinstruction.cpp
index 97e2bf6af..631446cf7 100644
--- a/src/shader_recompiler/frontend/ir/microinstruction.cpp
+++ b/src/shader_recompiler/frontend/ir/microinstruction.cpp
@@ -118,6 +118,7 @@ bool Inst::MayHaveSideEffects() const noexcept {
case Opcode::SharedAtomicXor32:
case Opcode::SharedAtomicExchange32:
case Opcode::SharedAtomicExchange64:
+ case Opcode::SharedAtomicExchange32x2:
case Opcode::GlobalAtomicIAdd32:
case Opcode::GlobalAtomicSMin32:
case Opcode::GlobalAtomicUMin32:
@@ -138,6 +139,15 @@ bool Inst::MayHaveSideEffects() const noexcept {
case Opcode::GlobalAtomicOr64:
case Opcode::GlobalAtomicXor64:
case Opcode::GlobalAtomicExchange64:
+ case Opcode::GlobalAtomicIAdd32x2:
+ case Opcode::GlobalAtomicSMin32x2:
+ case Opcode::GlobalAtomicUMin32x2:
+ case Opcode::GlobalAtomicSMax32x2:
+ case Opcode::GlobalAtomicUMax32x2:
+ case Opcode::GlobalAtomicAnd32x2:
+ case Opcode::GlobalAtomicOr32x2:
+ case Opcode::GlobalAtomicXor32x2:
+ case Opcode::GlobalAtomicExchange32x2:
case Opcode::GlobalAtomicAddF32:
case Opcode::GlobalAtomicAddF16x2:
case Opcode::GlobalAtomicAddF32x2:
@@ -165,6 +175,15 @@ bool Inst::MayHaveSideEffects() const noexcept {
case Opcode::StorageAtomicOr64:
case Opcode::StorageAtomicXor64:
case Opcode::StorageAtomicExchange64:
+ case Opcode::StorageAtomicIAdd32x2:
+ case Opcode::StorageAtomicSMin32x2:
+ case Opcode::StorageAtomicUMin32x2:
+ case Opcode::StorageAtomicSMax32x2:
+ case Opcode::StorageAtomicUMax32x2:
+ case Opcode::StorageAtomicAnd32x2:
+ case Opcode::StorageAtomicOr32x2:
+ case Opcode::StorageAtomicXor32x2:
+ case Opcode::StorageAtomicExchange32x2:
case Opcode::StorageAtomicAddF32:
case Opcode::StorageAtomicAddF16x2:
case Opcode::StorageAtomicAddF32x2:
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index b94ce7406..efb6bfac3 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -341,6 +341,7 @@ OPCODE(SharedAtomicOr32, U32, U32,
OPCODE(SharedAtomicXor32, U32, U32, U32, )
OPCODE(SharedAtomicExchange32, U32, U32, U32, )
OPCODE(SharedAtomicExchange64, U64, U32, U64, )
+OPCODE(SharedAtomicExchange32x2, U32x2, U32, U32x2, )
OPCODE(GlobalAtomicIAdd32, U32, U64, U32, )
OPCODE(GlobalAtomicSMin32, U32, U64, U32, )
@@ -362,6 +363,15 @@ OPCODE(GlobalAtomicAnd64, U64, U64,
OPCODE(GlobalAtomicOr64, U64, U64, U64, )
OPCODE(GlobalAtomicXor64, U64, U64, U64, )
OPCODE(GlobalAtomicExchange64, U64, U64, U64, )
+OPCODE(GlobalAtomicIAdd32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicSMin32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicUMin32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicSMax32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicUMax32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicAnd32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicOr32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicXor32x2, U32x2, U32x2, U32x2, )
+OPCODE(GlobalAtomicExchange32x2, U32x2, U32x2, U32x2, )
OPCODE(GlobalAtomicAddF32, F32, U64, F32, )
OPCODE(GlobalAtomicAddF16x2, U32, U64, F16x2, )
OPCODE(GlobalAtomicAddF32x2, U32, U64, F32x2, )
@@ -390,6 +400,15 @@ OPCODE(StorageAtomicAnd64, U64, U32,
OPCODE(StorageAtomicOr64, U64, U32, U32, U64, )
OPCODE(StorageAtomicXor64, U64, U32, U32, U64, )
OPCODE(StorageAtomicExchange64, U64, U32, U32, U64, )
+OPCODE(StorageAtomicIAdd32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicSMin32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicUMin32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicSMax32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicUMax32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicAnd32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicOr32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicXor32x2, U32x2, U32, U32, U32x2, )
+OPCODE(StorageAtomicExchange32x2, U32x2, U32, U32, U32x2, )
OPCODE(StorageAtomicAddF32, F32, U32, U32, F32, )
OPCODE(StorageAtomicAddF16x2, U32, U32, U32, F16x2, )
OPCODE(StorageAtomicAddF32x2, U32, U32, U32, F32x2, )
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/load_constant.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/load_constant.cpp
index 2300088e3..8007a4d46 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/load_constant.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/load_constant.cpp
@@ -11,10 +11,20 @@ namespace Shader::Maxwell {
using namespace LDC;
namespace {
std::pair<IR::U32, IR::U32> Slot(IR::IREmitter& ir, Mode mode, const IR::U32& imm_index,
- const IR::U32& reg, const IR::U32& imm) {
+ const IR::U32& reg, const IR::U32& imm_offset) {
switch (mode) {
case Mode::Default:
- return {imm_index, ir.IAdd(reg, imm)};
+ return {imm_index, ir.IAdd(reg, imm_offset)};
+ case Mode::IS: {
+ // Segmented addressing mode
+ // Ra+imm_offset points into a flat mapping of const buffer
+ // address space
+ const IR::U32 address{ir.IAdd(reg, imm_offset)};
+ const IR::U32 index{ir.BitFieldExtract(address, ir.Imm32(16), ir.Imm32(16))};
+ const IR::U32 offset{ir.BitFieldExtract(address, ir.Imm32(0), ir.Imm32(16))};
+
+ return {ir.IAdd(index, imm_index), offset};
+ }
default:
break;
}
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input.cpp
index e0fe47912..f3c7ceb57 100644
--- a/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input.cpp
@@ -13,59 +13,535 @@ namespace {
// Emulate GPU's LOP3.LUT (three-input logic op with 8-bit truth table)
IR::U32 ApplyLUT(IR::IREmitter& ir, const IR::U32& a, const IR::U32& b, const IR::U32& c,
u64 ttbl) {
- IR::U32 r{ir.Imm32(0)};
- const IR::U32 not_a{ir.BitwiseNot(a)};
- const IR::U32 not_b{ir.BitwiseNot(b)};
- const IR::U32 not_c{ir.BitwiseNot(c)};
- if (ttbl & 0x01) {
- // r |= ~a & ~b & ~c;
- const auto lhs{ir.BitwiseAnd(not_a, not_b)};
- const auto rhs{ir.BitwiseAnd(lhs, not_c)};
- r = ir.BitwiseOr(r, rhs);
+ switch (ttbl) {
+ // generated code, do not edit manually
+ case 0:
+ return ir.Imm32(0);
+ case 1:
+ return ir.BitwiseNot(ir.BitwiseOr(a, ir.BitwiseOr(b, c)));
+ case 2:
+ return ir.BitwiseAnd(c, ir.BitwiseNot(ir.BitwiseOr(a, b)));
+ case 3:
+ return ir.BitwiseNot(ir.BitwiseOr(a, b));
+ case 4:
+ return ir.BitwiseAnd(b, ir.BitwiseNot(ir.BitwiseOr(a, c)));
+ case 5:
+ return ir.BitwiseNot(ir.BitwiseOr(a, c));
+ case 6:
+ return ir.BitwiseAnd(ir.BitwiseNot(a), ir.BitwiseXor(b, c));
+ case 7:
+ return ir.BitwiseNot(ir.BitwiseOr(a, ir.BitwiseAnd(b, c)));
+ case 8:
+ return ir.BitwiseAnd(ir.BitwiseAnd(b, c), ir.BitwiseNot(a));
+ case 9:
+ return ir.BitwiseNot(ir.BitwiseOr(a, ir.BitwiseXor(b, c)));
+ case 10:
+ return ir.BitwiseAnd(c, ir.BitwiseNot(a));
+ case 11:
+ return ir.BitwiseAnd(ir.BitwiseNot(a), ir.BitwiseOr(c, ir.BitwiseNot(b)));
+ case 12:
+ return ir.BitwiseAnd(b, ir.BitwiseNot(a));
+ case 13:
+ return ir.BitwiseAnd(ir.BitwiseNot(a), ir.BitwiseOr(b, ir.BitwiseNot(c)));
+ case 14:
+ return ir.BitwiseAnd(ir.BitwiseNot(a), ir.BitwiseOr(b, c));
+ case 15:
+ return ir.BitwiseNot(a);
+ case 16:
+ return ir.BitwiseAnd(a, ir.BitwiseNot(ir.BitwiseOr(b, c)));
+ case 17:
+ return ir.BitwiseNot(ir.BitwiseOr(b, c));
+ case 18:
+ return ir.BitwiseAnd(ir.BitwiseNot(b), ir.BitwiseXor(a, c));
+ case 19:
+ return ir.BitwiseNot(ir.BitwiseOr(b, ir.BitwiseAnd(a, c)));
+ case 20:
+ return ir.BitwiseAnd(ir.BitwiseNot(c), ir.BitwiseXor(a, b));
+ case 21:
+ return ir.BitwiseNot(ir.BitwiseOr(c, ir.BitwiseAnd(a, b)));
+ case 22:
+ return ir.BitwiseXor(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseAnd(a, b)));
+ case 23:
+ return ir.BitwiseXor(ir.BitwiseAnd(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c)),
+ ir.BitwiseNot(a));
+ case 24:
+ return ir.BitwiseAnd(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c));
+ case 25:
+ return ir.BitwiseNot(ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(b, c)));
+ case 26:
+ return ir.BitwiseAnd(ir.BitwiseOr(c, ir.BitwiseNot(b)), ir.BitwiseXor(a, c));
+ case 27:
+ return ir.BitwiseXor(ir.BitwiseOr(a, ir.BitwiseNot(c)), ir.BitwiseOr(b, c));
+ case 28:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, ir.BitwiseNot(c)), ir.BitwiseXor(a, b));
+ case 29:
+ return ir.BitwiseXor(ir.BitwiseOr(a, ir.BitwiseNot(b)), ir.BitwiseOr(b, c));
+ case 30:
+ return ir.BitwiseXor(a, ir.BitwiseOr(b, c));
+ case 31:
+ return ir.BitwiseNot(ir.BitwiseAnd(a, ir.BitwiseOr(b, c)));
+ case 32:
+ return ir.BitwiseAnd(ir.BitwiseAnd(a, c), ir.BitwiseNot(b));
+ case 33:
+ return ir.BitwiseNot(ir.BitwiseOr(b, ir.BitwiseXor(a, c)));
+ case 34:
+ return ir.BitwiseAnd(c, ir.BitwiseNot(b));
+ case 35:
+ return ir.BitwiseAnd(ir.BitwiseNot(b), ir.BitwiseOr(c, ir.BitwiseNot(a)));
+ case 36:
+ return ir.BitwiseAnd(ir.BitwiseXor(a, b), ir.BitwiseXor(b, c));
+ case 37:
+ return ir.BitwiseNot(ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(a, c)));
+ case 38:
+ return ir.BitwiseAnd(ir.BitwiseOr(c, ir.BitwiseNot(a)), ir.BitwiseXor(b, c));
+ case 39:
+ return ir.BitwiseXor(ir.BitwiseOr(a, c), ir.BitwiseOr(b, ir.BitwiseNot(c)));
+ case 40:
+ return ir.BitwiseAnd(c, ir.BitwiseXor(a, b));
+ case 41:
+ return ir.BitwiseXor(ir.BitwiseOr(a, b),
+ ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseNot(c)));
+ case 42:
+ return ir.BitwiseAnd(c, ir.BitwiseNot(ir.BitwiseAnd(a, b)));
+ case 43:
+ return ir.BitwiseXor(ir.BitwiseOr(a, ir.BitwiseNot(c)),
+ ir.BitwiseOr(b, ir.BitwiseXor(a, c)));
+ case 44:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, c), ir.BitwiseXor(a, b));
+ case 45:
+ return ir.BitwiseXor(a, ir.BitwiseOr(b, ir.BitwiseNot(c)));
+ case 46:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, b), ir.BitwiseOr(b, c));
+ case 47:
+ return ir.BitwiseOr(ir.BitwiseAnd(c, ir.BitwiseNot(b)), ir.BitwiseNot(a));
+ case 48:
+ return ir.BitwiseAnd(a, ir.BitwiseNot(b));
+ case 49:
+ return ir.BitwiseAnd(ir.BitwiseNot(b), ir.BitwiseOr(a, ir.BitwiseNot(c)));
+ case 50:
+ return ir.BitwiseAnd(ir.BitwiseNot(b), ir.BitwiseOr(a, c));
+ case 51:
+ return ir.BitwiseNot(b);
+ case 52:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(c)), ir.BitwiseXor(a, b));
+ case 53:
+ return ir.BitwiseXor(ir.BitwiseOr(a, c), ir.BitwiseOr(b, ir.BitwiseNot(a)));
+ case 54:
+ return ir.BitwiseXor(b, ir.BitwiseOr(a, c));
+ case 55:
+ return ir.BitwiseNot(ir.BitwiseAnd(b, ir.BitwiseOr(a, c)));
+ case 56:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(a, b));
+ case 57:
+ return ir.BitwiseXor(b, ir.BitwiseOr(a, ir.BitwiseNot(c)));
+ case 58:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, b), ir.BitwiseOr(a, c));
+ case 59:
+ return ir.BitwiseOr(ir.BitwiseAnd(c, ir.BitwiseNot(a)), ir.BitwiseNot(b));
+ case 60:
+ return ir.BitwiseXor(a, b);
+ case 61:
+ return ir.BitwiseOr(ir.BitwiseNot(ir.BitwiseOr(a, c)), ir.BitwiseXor(a, b));
+ case 62:
+ return ir.BitwiseOr(ir.BitwiseAnd(c, ir.BitwiseNot(a)), ir.BitwiseXor(a, b));
+ case 63:
+ return ir.BitwiseNot(ir.BitwiseAnd(a, b));
+ case 64:
+ return ir.BitwiseAnd(ir.BitwiseAnd(a, b), ir.BitwiseNot(c));
+ case 65:
+ return ir.BitwiseNot(ir.BitwiseOr(c, ir.BitwiseXor(a, b)));
+ case 66:
+ return ir.BitwiseAnd(ir.BitwiseXor(a, c), ir.BitwiseXor(b, c));
+ case 67:
+ return ir.BitwiseNot(ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseXor(a, b)));
+ case 68:
+ return ir.BitwiseAnd(b, ir.BitwiseNot(c));
+ case 69:
+ return ir.BitwiseAnd(ir.BitwiseNot(c), ir.BitwiseOr(b, ir.BitwiseNot(a)));
+ case 70:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, ir.BitwiseNot(a)), ir.BitwiseXor(b, c));
+ case 71:
+ return ir.BitwiseXor(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseNot(b)));
+ case 72:
+ return ir.BitwiseAnd(b, ir.BitwiseXor(a, c));
+ case 73:
+ return ir.BitwiseXor(ir.BitwiseOr(a, c),
+ ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseNot(b)));
+ case 74:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, c), ir.BitwiseXor(a, c));
+ case 75:
+ return ir.BitwiseXor(a, ir.BitwiseOr(c, ir.BitwiseNot(b)));
+ case 76:
+ return ir.BitwiseAnd(b, ir.BitwiseNot(ir.BitwiseAnd(a, c)));
+ case 77:
+ return ir.BitwiseXor(ir.BitwiseOr(a, ir.BitwiseNot(b)),
+ ir.BitwiseOr(c, ir.BitwiseXor(a, b)));
+ case 78:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, c), ir.BitwiseOr(b, c));
+ case 79:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, ir.BitwiseNot(c)), ir.BitwiseNot(a));
+ case 80:
+ return ir.BitwiseAnd(a, ir.BitwiseNot(c));
+ case 81:
+ return ir.BitwiseAnd(ir.BitwiseNot(c), ir.BitwiseOr(a, ir.BitwiseNot(b)));
+ case 82:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(b)), ir.BitwiseXor(a, c));
+ case 83:
+ return ir.BitwiseXor(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseNot(a)));
+ case 84:
+ return ir.BitwiseAnd(ir.BitwiseNot(c), ir.BitwiseOr(a, b));
+ case 85:
+ return ir.BitwiseNot(c);
+ case 86:
+ return ir.BitwiseXor(c, ir.BitwiseOr(a, b));
+ case 87:
+ return ir.BitwiseNot(ir.BitwiseAnd(c, ir.BitwiseOr(a, b)));
+ case 88:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(a, c));
+ case 89:
+ return ir.BitwiseXor(c, ir.BitwiseOr(a, ir.BitwiseNot(b)));
+ case 90:
+ return ir.BitwiseXor(a, c);
+ case 91:
+ return ir.BitwiseOr(ir.BitwiseNot(ir.BitwiseOr(a, b)), ir.BitwiseXor(a, c));
+ case 92:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, c), ir.BitwiseOr(a, b));
+ case 93:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, ir.BitwiseNot(a)), ir.BitwiseNot(c));
+ case 94:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, ir.BitwiseNot(a)), ir.BitwiseXor(a, c));
+ case 95:
+ return ir.BitwiseNot(ir.BitwiseAnd(a, c));
+ case 96:
+ return ir.BitwiseAnd(a, ir.BitwiseXor(b, c));
+ case 97:
+ return ir.BitwiseXor(ir.BitwiseOr(b, c),
+ ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseNot(a)));
+ case 98:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(b, c));
+ case 99:
+ return ir.BitwiseXor(b, ir.BitwiseOr(c, ir.BitwiseNot(a)));
+ case 100:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(b, c));
+ case 101:
+ return ir.BitwiseXor(c, ir.BitwiseOr(b, ir.BitwiseNot(a)));
+ case 102:
+ return ir.BitwiseXor(b, c);
+ case 103:
+ return ir.BitwiseOr(ir.BitwiseNot(ir.BitwiseOr(a, b)), ir.BitwiseXor(b, c));
+ case 104:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(c, ir.BitwiseAnd(a, b)));
+ case 105:
+ return ir.BitwiseXor(ir.BitwiseNot(a), ir.BitwiseXor(b, c));
+ case 106:
+ return ir.BitwiseXor(c, ir.BitwiseAnd(a, b));
+ case 107:
+ return ir.BitwiseXor(ir.BitwiseAnd(c, ir.BitwiseOr(a, b)),
+ ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 108:
+ return ir.BitwiseXor(b, ir.BitwiseAnd(a, c));
+ case 109:
+ return ir.BitwiseXor(ir.BitwiseAnd(b, ir.BitwiseOr(a, c)),
+ ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 110:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, ir.BitwiseNot(a)), ir.BitwiseXor(b, c));
+ case 111:
+ return ir.BitwiseOr(ir.BitwiseNot(a), ir.BitwiseXor(b, c));
+ case 112:
+ return ir.BitwiseAnd(a, ir.BitwiseNot(ir.BitwiseAnd(b, c)));
+ case 113:
+ return ir.BitwiseXor(ir.BitwiseOr(b, ir.BitwiseNot(a)),
+ ir.BitwiseOr(c, ir.BitwiseXor(a, b)));
+ case 114:
+ return ir.BitwiseXor(ir.BitwiseAnd(b, c), ir.BitwiseOr(a, c));
+ case 115:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, ir.BitwiseNot(c)), ir.BitwiseNot(b));
+ case 116:
+ return ir.BitwiseXor(ir.BitwiseAnd(b, c), ir.BitwiseOr(a, b));
+ case 117:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, ir.BitwiseNot(b)), ir.BitwiseNot(c));
+ case 118:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, ir.BitwiseNot(b)), ir.BitwiseXor(b, c));
+ case 119:
+ return ir.BitwiseNot(ir.BitwiseAnd(b, c));
+ case 120:
+ return ir.BitwiseXor(a, ir.BitwiseAnd(b, c));
+ case 121:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, ir.BitwiseOr(b, c)),
+ ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 122:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, ir.BitwiseNot(b)), ir.BitwiseXor(a, c));
+ case 123:
+ return ir.BitwiseOr(ir.BitwiseNot(b), ir.BitwiseXor(a, c));
+ case 124:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, ir.BitwiseNot(c)), ir.BitwiseXor(a, b));
+ case 125:
+ return ir.BitwiseOr(ir.BitwiseNot(c), ir.BitwiseXor(a, b));
+ case 126:
+ return ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c));
+ case 127:
+ return ir.BitwiseNot(ir.BitwiseAnd(a, ir.BitwiseAnd(b, c)));
+ case 128:
+ return ir.BitwiseAnd(a, ir.BitwiseAnd(b, c));
+ case 129:
+ return ir.BitwiseNot(ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c)));
+ case 130:
+ return ir.BitwiseAnd(c, ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 131:
+ return ir.BitwiseAnd(ir.BitwiseOr(c, ir.BitwiseNot(a)), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 132:
+ return ir.BitwiseAnd(b, ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 133:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, ir.BitwiseNot(a)), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 134:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, c), ir.BitwiseXor(a, ir.BitwiseXor(b, c)));
+ case 135:
+ return ir.BitwiseXor(ir.BitwiseAnd(b, c), ir.BitwiseNot(a));
+ case 136:
+ return ir.BitwiseAnd(b, c);
+ case 137:
+ return ir.BitwiseAnd(ir.BitwiseOr(b, ir.BitwiseNot(a)), ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 138:
+ return ir.BitwiseAnd(c, ir.BitwiseOr(b, ir.BitwiseNot(a)));
+ case 139:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseNot(ir.BitwiseOr(a, b)));
+ case 140:
+ return ir.BitwiseAnd(b, ir.BitwiseOr(c, ir.BitwiseNot(a)));
+ case 141:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseNot(ir.BitwiseOr(a, c)));
+ case 142:
+ return ir.BitwiseXor(a, ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c)));
+ case 143:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseNot(a));
+ case 144:
+ return ir.BitwiseAnd(a, ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 145:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(b)), ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 146:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(a, ir.BitwiseXor(b, c)));
+ case 147:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, c), ir.BitwiseNot(b));
+ case 148:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(a, ir.BitwiseXor(b, c)));
+ case 149:
+ return ir.BitwiseXor(ir.BitwiseAnd(a, b), ir.BitwiseNot(c));
+ case 150:
+ return ir.BitwiseXor(a, ir.BitwiseXor(b, c));
+ case 151:
+ return ir.BitwiseOr(ir.BitwiseNot(ir.BitwiseOr(a, b)),
+ ir.BitwiseXor(a, ir.BitwiseXor(b, c)));
+ case 152:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 153:
+ return ir.BitwiseXor(b, ir.BitwiseNot(c));
+ case 154:
+ return ir.BitwiseXor(c, ir.BitwiseAnd(a, ir.BitwiseNot(b)));
+ case 155:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(b, c)));
+ case 156:
+ return ir.BitwiseXor(b, ir.BitwiseAnd(a, ir.BitwiseNot(c)));
+ case 157:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(b, c)));
+ case 158:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseXor(a, ir.BitwiseOr(b, c)));
+ case 159:
+ return ir.BitwiseNot(ir.BitwiseAnd(a, ir.BitwiseXor(b, c)));
+ case 160:
+ return ir.BitwiseAnd(a, c);
+ case 161:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(b)), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 162:
+ return ir.BitwiseAnd(c, ir.BitwiseOr(a, ir.BitwiseNot(b)));
+ case 163:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseNot(ir.BitwiseOr(a, b)));
+ case 164:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 165:
+ return ir.BitwiseXor(a, ir.BitwiseNot(c));
+ case 166:
+ return ir.BitwiseXor(c, ir.BitwiseAnd(b, ir.BitwiseNot(a)));
+ case 167:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseXor(a, c)));
+ case 168:
+ return ir.BitwiseAnd(c, ir.BitwiseOr(a, b));
+ case 169:
+ return ir.BitwiseXor(ir.BitwiseNot(c), ir.BitwiseOr(a, b));
+ case 170:
+ return c;
+ case 171:
+ return ir.BitwiseOr(c, ir.BitwiseNot(ir.BitwiseOr(a, b)));
+ case 172:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseNot(a)));
+ case 173:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 174:
+ return ir.BitwiseOr(c, ir.BitwiseAnd(b, ir.BitwiseNot(a)));
+ case 175:
+ return ir.BitwiseOr(c, ir.BitwiseNot(a));
+ case 176:
+ return ir.BitwiseAnd(a, ir.BitwiseOr(c, ir.BitwiseNot(b)));
+ case 177:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseNot(ir.BitwiseOr(b, c)));
+ case 178:
+ return ir.BitwiseXor(b, ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c)));
+ case 179:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseNot(b));
+ case 180:
+ return ir.BitwiseXor(a, ir.BitwiseAnd(b, ir.BitwiseNot(c)));
+ case 181:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(b, c), ir.BitwiseXor(a, c)));
+ case 182:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseXor(b, ir.BitwiseOr(a, c)));
+ case 183:
+ return ir.BitwiseNot(ir.BitwiseAnd(b, ir.BitwiseXor(a, c)));
+ case 184:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseNot(b)));
+ case 185:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 186:
+ return ir.BitwiseOr(c, ir.BitwiseAnd(a, ir.BitwiseNot(b)));
+ case 187:
+ return ir.BitwiseOr(c, ir.BitwiseNot(b));
+ case 188:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseXor(a, b));
+ case 189:
+ return ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 190:
+ return ir.BitwiseOr(c, ir.BitwiseXor(a, b));
+ case 191:
+ return ir.BitwiseOr(c, ir.BitwiseNot(ir.BitwiseAnd(a, b)));
+ case 192:
+ return ir.BitwiseAnd(a, b);
+ case 193:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(c)), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 194:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 195:
+ return ir.BitwiseXor(a, ir.BitwiseNot(b));
+ case 196:
+ return ir.BitwiseAnd(b, ir.BitwiseOr(a, ir.BitwiseNot(c)));
+ case 197:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseNot(ir.BitwiseOr(a, c)));
+ case 198:
+ return ir.BitwiseXor(b, ir.BitwiseAnd(c, ir.BitwiseNot(a)));
+ case 199:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseXor(a, b)));
+ case 200:
+ return ir.BitwiseAnd(b, ir.BitwiseOr(a, c));
+ case 201:
+ return ir.BitwiseXor(ir.BitwiseNot(b), ir.BitwiseOr(a, c));
+ case 202:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseOr(b, ir.BitwiseNot(a)));
+ case 203:
+ return ir.BitwiseOr(ir.BitwiseAnd(b, c), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 204:
+ return b;
+ case 205:
+ return ir.BitwiseOr(b, ir.BitwiseNot(ir.BitwiseOr(a, c)));
+ case 206:
+ return ir.BitwiseOr(b, ir.BitwiseAnd(c, ir.BitwiseNot(a)));
+ case 207:
+ return ir.BitwiseOr(b, ir.BitwiseNot(a));
+ case 208:
+ return ir.BitwiseAnd(a, ir.BitwiseOr(b, ir.BitwiseNot(c)));
+ case 209:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseNot(ir.BitwiseOr(b, c)));
+ case 210:
+ return ir.BitwiseXor(a, ir.BitwiseAnd(c, ir.BitwiseNot(b)));
+ case 211:
+ return ir.BitwiseNot(ir.BitwiseAnd(ir.BitwiseOr(b, c), ir.BitwiseXor(a, b)));
+ case 212:
+ return ir.BitwiseXor(c, ir.BitwiseOr(ir.BitwiseXor(a, b), ir.BitwiseXor(a, c)));
+ case 213:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseNot(c));
+ case 214:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(c, ir.BitwiseOr(a, b)));
+ case 215:
+ return ir.BitwiseNot(ir.BitwiseAnd(c, ir.BitwiseXor(a, b)));
+ case 216:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, c), ir.BitwiseOr(b, ir.BitwiseNot(c)));
+ case 217:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 218:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(a, c));
+ case 219:
+ return ir.BitwiseOr(ir.BitwiseXor(a, c), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 220:
+ return ir.BitwiseOr(b, ir.BitwiseAnd(a, ir.BitwiseNot(c)));
+ case 221:
+ return ir.BitwiseOr(b, ir.BitwiseNot(c));
+ case 222:
+ return ir.BitwiseOr(b, ir.BitwiseXor(a, c));
+ case 223:
+ return ir.BitwiseOr(b, ir.BitwiseNot(ir.BitwiseAnd(a, c)));
+ case 224:
+ return ir.BitwiseAnd(a, ir.BitwiseOr(b, c));
+ case 225:
+ return ir.BitwiseXor(ir.BitwiseNot(a), ir.BitwiseOr(b, c));
+ case 226:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(b)), ir.BitwiseOr(b, c));
+ case 227:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, c), ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 228:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, ir.BitwiseNot(c)), ir.BitwiseOr(b, c));
+ case 229:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 230:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b), ir.BitwiseXor(b, c));
+ case 231:
+ return ir.BitwiseOr(ir.BitwiseXor(a, ir.BitwiseNot(b)), ir.BitwiseXor(b, c));
+ case 232:
+ return ir.BitwiseAnd(ir.BitwiseOr(a, b), ir.BitwiseOr(c, ir.BitwiseAnd(a, b)));
+ case 233:
+ return ir.BitwiseOr(ir.BitwiseAnd(a, b),
+ ir.BitwiseXor(ir.BitwiseNot(c), ir.BitwiseOr(a, b)));
+ case 234:
+ return ir.BitwiseOr(c, ir.BitwiseAnd(a, b));
+ case 235:
+ return ir.BitwiseOr(c, ir.BitwiseXor(a, ir.BitwiseNot(b)));
+ case 236:
+ return ir.BitwiseOr(b, ir.BitwiseAnd(a, c));
+ case 237:
+ return ir.BitwiseOr(b, ir.BitwiseXor(a, ir.BitwiseNot(c)));
+ case 238:
+ return ir.BitwiseOr(b, c);
+ case 239:
+ return ir.BitwiseOr(ir.BitwiseNot(a), ir.BitwiseOr(b, c));
+ case 240:
+ return a;
+ case 241:
+ return ir.BitwiseOr(a, ir.BitwiseNot(ir.BitwiseOr(b, c)));
+ case 242:
+ return ir.BitwiseOr(a, ir.BitwiseAnd(c, ir.BitwiseNot(b)));
+ case 243:
+ return ir.BitwiseOr(a, ir.BitwiseNot(b));
+ case 244:
+ return ir.BitwiseOr(a, ir.BitwiseAnd(b, ir.BitwiseNot(c)));
+ case 245:
+ return ir.BitwiseOr(a, ir.BitwiseNot(c));
+ case 246:
+ return ir.BitwiseOr(a, ir.BitwiseXor(b, c));
+ case 247:
+ return ir.BitwiseOr(a, ir.BitwiseNot(ir.BitwiseAnd(b, c)));
+ case 248:
+ return ir.BitwiseOr(a, ir.BitwiseAnd(b, c));
+ case 249:
+ return ir.BitwiseOr(a, ir.BitwiseXor(b, ir.BitwiseNot(c)));
+ case 250:
+ return ir.BitwiseOr(a, c);
+ case 251:
+ return ir.BitwiseOr(ir.BitwiseNot(b), ir.BitwiseOr(a, c));
+ case 252:
+ return ir.BitwiseOr(a, b);
+ case 253:
+ return ir.BitwiseOr(ir.BitwiseNot(c), ir.BitwiseOr(a, b));
+ case 254:
+ return ir.BitwiseOr(a, ir.BitwiseOr(b, c));
+ case 255:
+ return ir.Imm32(0xFFFFFFFF);
+ // end of generated code
}
- if (ttbl & 0x02) {
- // r |= ~a & ~b & c;
- const auto lhs{ir.BitwiseAnd(not_a, not_b)};
- const auto rhs{ir.BitwiseAnd(lhs, c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x04) {
- // r |= ~a & b & ~c;
- const auto lhs{ir.BitwiseAnd(not_a, b)};
- const auto rhs{ir.BitwiseAnd(lhs, not_c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x08) {
- // r |= ~a & b & c;
- const auto lhs{ir.BitwiseAnd(not_a, b)};
- const auto rhs{ir.BitwiseAnd(lhs, c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x10) {
- // r |= a & ~b & ~c;
- const auto lhs{ir.BitwiseAnd(a, not_b)};
- const auto rhs{ir.BitwiseAnd(lhs, not_c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x20) {
- // r |= a & ~b & c;
- const auto lhs{ir.BitwiseAnd(a, not_b)};
- const auto rhs{ir.BitwiseAnd(lhs, c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x40) {
- // r |= a & b & ~c;
- const auto lhs{ir.BitwiseAnd(a, b)};
- const auto rhs{ir.BitwiseAnd(lhs, not_c)};
- r = ir.BitwiseOr(r, rhs);
- }
- if (ttbl & 0x80) {
- // r |= a & b & c;
- const auto lhs{ir.BitwiseAnd(a, b)};
- const auto rhs{ir.BitwiseAnd(lhs, c)};
- r = ir.BitwiseOr(r, rhs);
- }
- return r;
+ throw NotImplementedException("LOP3 with out of range ttbl");
}
IR::U32 LOP3(TranslatorVisitor& v, u64 insn, const IR::U32& op_b, const IR::U32& op_c, u64 lut) {
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input_lut3.py b/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input_lut3.py
new file mode 100644
index 000000000..8f547c266
--- /dev/null
+++ b/src/shader_recompiler/frontend/maxwell/translate/impl/logic_operation_three_input_lut3.py
@@ -0,0 +1,92 @@
+# Copyright © 2022 degasus <markus@selfnet.de>
+# This work is free. You can redistribute it and/or modify it under the
+# terms of the Do What The Fuck You Want To Public License, Version 2,
+# as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
+
+from itertools import product
+
+# The primitive instructions
+OPS = {
+ 'ir.BitwiseAnd({}, {})' : (2, 1, lambda a,b: a&b),
+ 'ir.BitwiseOr({}, {})' : (2, 1, lambda a,b: a|b),
+ 'ir.BitwiseXor({}, {})' : (2, 1, lambda a,b: a^b),
+ 'ir.BitwiseNot({})' : (1, 0.1, lambda a: (~a) & 255), # Only tiny cost, as this can often inlined in other instructions
+}
+
+# Our database of combination of instructions
+optimized_calls = {}
+def cmp(lhs, rhs):
+ if lhs is None: # new entry
+ return True
+ if lhs[3] > rhs[3]: # costs
+ return True
+ if lhs[3] < rhs[3]: # costs
+ return False
+ if len(lhs[0]) > len(rhs[0]): # string len
+ return True
+ if len(lhs[0]) < len(rhs[0]): # string len
+ return False
+ if lhs[0] > rhs[0]: # string sorting
+ return True
+ if lhs[0] < rhs[0]: # string sorting
+ return False
+ assert lhs == rhs, "redundant instruction, bug in brute force"
+ return False
+def register(imm, instruction, count, latency):
+ # Use the sum of instruction count and latency as costs to evaluate which combination is best
+ costs = count + latency
+
+ old = optimized_calls.get(imm, None)
+ new = (instruction, count, latency, costs)
+
+ # Update if new or better
+ if cmp(old, new):
+ optimized_calls[imm] = new
+ return True
+
+ return False
+
+# Constants: 0, 1 (for free)
+register(0, 'ir.Imm32(0)', 0, 0)
+register(255, 'ir.Imm32(0xFFFFFFFF)', 0, 0)
+
+# Inputs: a, b, c (for free)
+ta = 0xF0
+tb = 0xCC
+tc = 0xAA
+inputs = {
+ ta : 'a',
+ tb : 'b',
+ tc : 'c',
+}
+for imm, instruction in inputs.items():
+ register(imm, instruction, 0, 0)
+ register((~imm) & 255, 'ir.BitwiseNot({})'.format(instruction), 0.099, 0.099) # slightly cheaper NEG on inputs
+
+# Try to combine two values from the db with an instruction.
+# If it is better than the old method, update it.
+while True:
+ registered = 0
+ calls_copy = optimized_calls.copy()
+ for OP, (argc, cost, f) in OPS.items():
+ for args in product(calls_copy.items(), repeat=argc):
+ # unpack(transponse) the arrays
+ imm = [arg[0] for arg in args]
+ value = [arg[1][0] for arg in args]
+ count = [arg[1][1] for arg in args]
+ latency = [arg[1][2] for arg in args]
+
+ registered += register(
+ f(*imm),
+ OP.format(*value),
+ sum(count) + cost,
+ max(latency) + cost)
+ if registered == 0:
+ # No update at all? So terminate
+ break
+
+# Hacky output. Please improve me to output valid C++ instead.
+s = """ case {imm}:
+ return {op};"""
+for imm in range(256):
+ print(s.format(imm=imm, op=optimized_calls[imm][0]))
diff --git a/src/shader_recompiler/frontend/maxwell/translate_program.cpp b/src/shader_recompiler/frontend/maxwell/translate_program.cpp
index 248ad3ced..b22725584 100644
--- a/src/shader_recompiler/frontend/maxwell/translate_program.cpp
+++ b/src/shader_recompiler/frontend/maxwell/translate_program.cpp
@@ -212,11 +212,11 @@ IR::Program TranslateProgram(ObjectPool<IR::Inst>& inst_pool, ObjectPool<IR::Blo
}
Optimization::SsaRewritePass(program);
+ Optimization::ConstantPropagationPass(program);
+
Optimization::GlobalMemoryToStorageBufferPass(program);
Optimization::TexturePass(env, program);
- Optimization::ConstantPropagationPass(program);
-
if (Settings::values.resolution_info.active) {
Optimization::RescalingPass(program);
}
diff --git a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
index b6a20f904..0b2c60842 100644
--- a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
+++ b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
@@ -29,6 +29,46 @@ void AddConstantBufferDescriptor(Info& info, u32 index, u32 count) {
});
}
+void AddRegisterIndexedLdc(Info& info) {
+ info.uses_cbuf_indirect = true;
+
+ // The shader can use any possible constant buffer
+ info.constant_buffer_mask = (1 << Info::MAX_CBUFS) - 1;
+
+ auto& cbufs{info.constant_buffer_descriptors};
+ cbufs.clear();
+ for (u32 i = 0; i < Info::MAX_CBUFS; i++) {
+ cbufs.push_back(ConstantBufferDescriptor{.index = i, .count = 1});
+
+ // The shader can use any possible access size
+ info.constant_buffer_used_sizes[i] = 0x10'000;
+ }
+}
+
+u32 GetElementSize(IR::Type& used_type, Shader::IR::Opcode opcode) {
+ switch (opcode) {
+ case IR::Opcode::GetCbufU8:
+ case IR::Opcode::GetCbufS8:
+ used_type |= IR::Type::U8;
+ return 1;
+ case IR::Opcode::GetCbufU16:
+ case IR::Opcode::GetCbufS16:
+ used_type |= IR::Type::U16;
+ return 2;
+ case IR::Opcode::GetCbufU32:
+ used_type |= IR::Type::U32;
+ return 4;
+ case IR::Opcode::GetCbufF32:
+ used_type |= IR::Type::F32;
+ return 4;
+ case IR::Opcode::GetCbufU32x2:
+ used_type |= IR::Type::U32x2;
+ return 8;
+ default:
+ throw InvalidArgument("Invalid opcode {}", opcode);
+ }
+}
+
void GetPatch(Info& info, IR::Patch patch) {
if (!IR::IsGeneric(patch)) {
throw NotImplementedException("Reading non-generic patch {}", patch);
@@ -360,6 +400,15 @@ void VisitUsages(Info& info, IR::Inst& inst) {
case IR::Opcode::GlobalAtomicOr64:
case IR::Opcode::GlobalAtomicXor64:
case IR::Opcode::GlobalAtomicExchange64:
+ case IR::Opcode::GlobalAtomicIAdd32x2:
+ case IR::Opcode::GlobalAtomicSMin32x2:
+ case IR::Opcode::GlobalAtomicUMin32x2:
+ case IR::Opcode::GlobalAtomicSMax32x2:
+ case IR::Opcode::GlobalAtomicUMax32x2:
+ case IR::Opcode::GlobalAtomicAnd32x2:
+ case IR::Opcode::GlobalAtomicOr32x2:
+ case IR::Opcode::GlobalAtomicXor32x2:
+ case IR::Opcode::GlobalAtomicExchange32x2:
case IR::Opcode::GlobalAtomicAddF32:
case IR::Opcode::GlobalAtomicAddF16x2:
case IR::Opcode::GlobalAtomicAddF32x2:
@@ -454,42 +503,18 @@ void VisitUsages(Info& info, IR::Inst& inst) {
case IR::Opcode::GetCbufU32x2: {
const IR::Value index{inst.Arg(0)};
const IR::Value offset{inst.Arg(1)};
- if (!index.IsImmediate()) {
- throw NotImplementedException("Constant buffer with non-immediate index");
- }
- AddConstantBufferDescriptor(info, index.U32(), 1);
- u32 element_size{};
- switch (inst.GetOpcode()) {
- case IR::Opcode::GetCbufU8:
- case IR::Opcode::GetCbufS8:
- info.used_constant_buffer_types |= IR::Type::U8;
- element_size = 1;
- break;
- case IR::Opcode::GetCbufU16:
- case IR::Opcode::GetCbufS16:
- info.used_constant_buffer_types |= IR::Type::U16;
- element_size = 2;
- break;
- case IR::Opcode::GetCbufU32:
- info.used_constant_buffer_types |= IR::Type::U32;
- element_size = 4;
- break;
- case IR::Opcode::GetCbufF32:
- info.used_constant_buffer_types |= IR::Type::F32;
- element_size = 4;
- break;
- case IR::Opcode::GetCbufU32x2:
- info.used_constant_buffer_types |= IR::Type::U32x2;
- element_size = 8;
- break;
- default:
- break;
- }
- u32& size{info.constant_buffer_used_sizes[index.U32()]};
- if (offset.IsImmediate()) {
- size = Common::AlignUp(std::max(size, offset.U32() + element_size), 16u);
+ if (index.IsImmediate()) {
+ AddConstantBufferDescriptor(info, index.U32(), 1);
+ u32 element_size = GetElementSize(info.used_constant_buffer_types, inst.GetOpcode());
+ u32& size{info.constant_buffer_used_sizes[index.U32()]};
+ if (offset.IsImmediate()) {
+ size = Common::AlignUp(std::max(size, offset.U32() + element_size), 16u);
+ } else {
+ size = 0x10'000;
+ }
} else {
- size = 0x10'000;
+ AddRegisterIndexedLdc(info);
+ GetElementSize(info.used_indirect_cbuf_types, inst.GetOpcode());
}
break;
}
@@ -597,6 +622,15 @@ void VisitUsages(Info& info, IR::Inst& inst) {
break;
case IR::Opcode::LoadStorage64:
case IR::Opcode::WriteStorage64:
+ case IR::Opcode::StorageAtomicIAdd32x2:
+ case IR::Opcode::StorageAtomicSMin32x2:
+ case IR::Opcode::StorageAtomicUMin32x2:
+ case IR::Opcode::StorageAtomicSMax32x2:
+ case IR::Opcode::StorageAtomicUMax32x2:
+ case IR::Opcode::StorageAtomicAnd32x2:
+ case IR::Opcode::StorageAtomicOr32x2:
+ case IR::Opcode::StorageAtomicXor32x2:
+ case IR::Opcode::StorageAtomicExchange32x2:
info.used_storage_buffer_types |= IR::Type::U32x2;
break;
case IR::Opcode::LoadStorage128:
diff --git a/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp b/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp
index 4197b0095..ddf497e32 100644
--- a/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp
+++ b/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp
@@ -92,6 +92,15 @@ bool IsGlobalMemory(const IR::Inst& inst) {
case IR::Opcode::GlobalAtomicOr64:
case IR::Opcode::GlobalAtomicXor64:
case IR::Opcode::GlobalAtomicExchange64:
+ case IR::Opcode::GlobalAtomicIAdd32x2:
+ case IR::Opcode::GlobalAtomicSMin32x2:
+ case IR::Opcode::GlobalAtomicUMin32x2:
+ case IR::Opcode::GlobalAtomicSMax32x2:
+ case IR::Opcode::GlobalAtomicUMax32x2:
+ case IR::Opcode::GlobalAtomicAnd32x2:
+ case IR::Opcode::GlobalAtomicOr32x2:
+ case IR::Opcode::GlobalAtomicXor32x2:
+ case IR::Opcode::GlobalAtomicExchange32x2:
case IR::Opcode::GlobalAtomicAddF32:
case IR::Opcode::GlobalAtomicAddF16x2:
case IR::Opcode::GlobalAtomicAddF32x2:
@@ -135,6 +144,15 @@ bool IsGlobalMemoryWrite(const IR::Inst& inst) {
case IR::Opcode::GlobalAtomicOr64:
case IR::Opcode::GlobalAtomicXor64:
case IR::Opcode::GlobalAtomicExchange64:
+ case IR::Opcode::GlobalAtomicIAdd32x2:
+ case IR::Opcode::GlobalAtomicSMin32x2:
+ case IR::Opcode::GlobalAtomicUMin32x2:
+ case IR::Opcode::GlobalAtomicSMax32x2:
+ case IR::Opcode::GlobalAtomicUMax32x2:
+ case IR::Opcode::GlobalAtomicAnd32x2:
+ case IR::Opcode::GlobalAtomicOr32x2:
+ case IR::Opcode::GlobalAtomicXor32x2:
+ case IR::Opcode::GlobalAtomicExchange32x2:
case IR::Opcode::GlobalAtomicAddF32:
case IR::Opcode::GlobalAtomicAddF16x2:
case IR::Opcode::GlobalAtomicAddF32x2:
@@ -199,6 +217,8 @@ IR::Opcode GlobalToStorage(IR::Opcode opcode) {
return IR::Opcode::StorageAtomicOr32;
case IR::Opcode::GlobalAtomicXor32:
return IR::Opcode::StorageAtomicXor32;
+ case IR::Opcode::GlobalAtomicExchange32:
+ return IR::Opcode::StorageAtomicExchange32;
case IR::Opcode::GlobalAtomicIAdd64:
return IR::Opcode::StorageAtomicIAdd64;
case IR::Opcode::GlobalAtomicSMin64:
@@ -215,10 +235,26 @@ IR::Opcode GlobalToStorage(IR::Opcode opcode) {
return IR::Opcode::StorageAtomicOr64;
case IR::Opcode::GlobalAtomicXor64:
return IR::Opcode::StorageAtomicXor64;
- case IR::Opcode::GlobalAtomicExchange32:
- return IR::Opcode::StorageAtomicExchange32;
case IR::Opcode::GlobalAtomicExchange64:
return IR::Opcode::StorageAtomicExchange64;
+ case IR::Opcode::GlobalAtomicIAdd32x2:
+ return IR::Opcode::StorageAtomicIAdd32x2;
+ case IR::Opcode::GlobalAtomicSMin32x2:
+ return IR::Opcode::StorageAtomicSMin32x2;
+ case IR::Opcode::GlobalAtomicUMin32x2:
+ return IR::Opcode::StorageAtomicUMin32x2;
+ case IR::Opcode::GlobalAtomicSMax32x2:
+ return IR::Opcode::StorageAtomicSMax32x2;
+ case IR::Opcode::GlobalAtomicUMax32x2:
+ return IR::Opcode::StorageAtomicUMax32x2;
+ case IR::Opcode::GlobalAtomicAnd32x2:
+ return IR::Opcode::StorageAtomicAnd32x2;
+ case IR::Opcode::GlobalAtomicOr32x2:
+ return IR::Opcode::StorageAtomicOr32x2;
+ case IR::Opcode::GlobalAtomicXor32x2:
+ return IR::Opcode::StorageAtomicXor32x2;
+ case IR::Opcode::GlobalAtomicExchange32x2:
+ return IR::Opcode::StorageAtomicExchange32x2;
case IR::Opcode::GlobalAtomicAddF32:
return IR::Opcode::StorageAtomicAddF32;
case IR::Opcode::GlobalAtomicAddF16x2:
@@ -298,7 +334,8 @@ std::optional<LowAddrInfo> TrackLowAddress(IR::Inst* inst) {
/// Tries to track the storage buffer address used by a global memory instruction
std::optional<StorageBufferAddr> Track(const IR::Value& value, const Bias* bias) {
const auto pred{[bias](const IR::Inst* inst) -> std::optional<StorageBufferAddr> {
- if (inst->GetOpcode() != IR::Opcode::GetCbufU32) {
+ if (inst->GetOpcode() != IR::Opcode::GetCbufU32 &&
+ inst->GetOpcode() != IR::Opcode::GetCbufU32x2) {
return std::nullopt;
}
const IR::Value index{inst->Arg(0)};
@@ -454,6 +491,15 @@ void Replace(IR::Block& block, IR::Inst& inst, const IR::U32& storage_index,
case IR::Opcode::GlobalAtomicOr64:
case IR::Opcode::GlobalAtomicXor64:
case IR::Opcode::GlobalAtomicExchange64:
+ case IR::Opcode::GlobalAtomicIAdd32x2:
+ case IR::Opcode::GlobalAtomicSMin32x2:
+ case IR::Opcode::GlobalAtomicUMin32x2:
+ case IR::Opcode::GlobalAtomicSMax32x2:
+ case IR::Opcode::GlobalAtomicUMax32x2:
+ case IR::Opcode::GlobalAtomicAnd32x2:
+ case IR::Opcode::GlobalAtomicOr32x2:
+ case IR::Opcode::GlobalAtomicXor32x2:
+ case IR::Opcode::GlobalAtomicExchange32x2:
case IR::Opcode::GlobalAtomicAddF32:
case IR::Opcode::GlobalAtomicAddF16x2:
case IR::Opcode::GlobalAtomicAddF32x2:
diff --git a/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp b/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
index e80d3d1d9..c2654cd9b 100644
--- a/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
+++ b/src/shader_recompiler/ir_opt/lower_int64_to_int32.cpp
@@ -199,6 +199,26 @@ void Lower(IR::Block& block, IR::Inst& inst) {
return ShiftRightLogical64To32(block, inst);
case IR::Opcode::ShiftRightArithmetic64:
return ShiftRightArithmetic64To32(block, inst);
+ case IR::Opcode::SharedAtomicExchange64:
+ return inst.ReplaceOpcode(IR::Opcode::SharedAtomicExchange32x2);
+ case IR::Opcode::GlobalAtomicIAdd64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicIAdd32x2);
+ case IR::Opcode::GlobalAtomicSMin64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicSMin32x2);
+ case IR::Opcode::GlobalAtomicUMin64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicUMin32x2);
+ case IR::Opcode::GlobalAtomicSMax64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicSMax32x2);
+ case IR::Opcode::GlobalAtomicUMax64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicUMax32x2);
+ case IR::Opcode::GlobalAtomicAnd64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicAnd32x2);
+ case IR::Opcode::GlobalAtomicOr64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicOr32x2);
+ case IR::Opcode::GlobalAtomicXor64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicXor32x2);
+ case IR::Opcode::GlobalAtomicExchange64:
+ return inst.ReplaceOpcode(IR::Opcode::GlobalAtomicExchange32x2);
default:
break;
}
diff --git a/src/shader_recompiler/ir_opt/rescaling_pass.cpp b/src/shader_recompiler/ir_opt/rescaling_pass.cpp
index c28500dd1..496d4667e 100644
--- a/src/shader_recompiler/ir_opt/rescaling_pass.cpp
+++ b/src/shader_recompiler/ir_opt/rescaling_pass.cpp
@@ -183,6 +183,31 @@ void ScaleIntegerComposite(IR::IREmitter& ir, IR::Inst& inst, const IR::U1& is_s
}
}
+void ScaleIntegerOffsetComposite(IR::IREmitter& ir, IR::Inst& inst, const IR::U1& is_scaled,
+ size_t index) {
+ const IR::Value composite{inst.Arg(index)};
+ if (composite.IsEmpty()) {
+ return;
+ }
+ const auto info{inst.Flags<IR::TextureInstInfo>()};
+ const IR::U32 x{Scale(ir, is_scaled, IR::U32{ir.CompositeExtract(composite, 0)})};
+ const IR::U32 y{Scale(ir, is_scaled, IR::U32{ir.CompositeExtract(composite, 1)})};
+ switch (info.type) {
+ case TextureType::ColorArray2D:
+ case TextureType::Color2D:
+ inst.SetArg(index, ir.CompositeConstruct(x, y));
+ break;
+ case TextureType::Color1D:
+ case TextureType::ColorArray1D:
+ case TextureType::Color3D:
+ case TextureType::ColorCube:
+ case TextureType::ColorArrayCube:
+ case TextureType::Buffer:
+ // Nothing to patch here
+ break;
+ }
+}
+
void SubScaleCoord(IR::IREmitter& ir, IR::Inst& inst, const IR::U1& is_scaled) {
const auto info{inst.Flags<IR::TextureInstInfo>()};
const IR::Value coord{inst.Arg(1)};
@@ -220,7 +245,7 @@ void SubScaleImageFetch(IR::Block& block, IR::Inst& inst) {
const IR::U1 is_scaled{ir.IsTextureScaled(ir.Imm32(info.descriptor_index))};
SubScaleCoord(ir, inst, is_scaled);
// Scale ImageFetch offset
- ScaleIntegerComposite(ir, inst, is_scaled, 2);
+ ScaleIntegerOffsetComposite(ir, inst, is_scaled, 2);
}
void SubScaleImageRead(IR::Block& block, IR::Inst& inst) {
@@ -242,7 +267,7 @@ void PatchImageFetch(IR::Block& block, IR::Inst& inst) {
const IR::U1 is_scaled{ir.IsTextureScaled(ir.Imm32(info.descriptor_index))};
ScaleIntegerComposite(ir, inst, is_scaled, 1);
// Scale ImageFetch offset
- ScaleIntegerComposite(ir, inst, is_scaled, 2);
+ ScaleIntegerOffsetComposite(ir, inst, is_scaled, 2);
}
void PatchImageRead(IR::Block& block, IR::Inst& inst) {
diff --git a/src/shader_recompiler/shader_info.h b/src/shader_recompiler/shader_info.h
index 9f375c30e..9d36bd9eb 100644
--- a/src/shader_recompiler/shader_info.h
+++ b/src/shader_recompiler/shader_info.h
@@ -173,9 +173,11 @@ struct Info {
bool uses_atomic_image_u32{};
bool uses_shadow_lod{};
bool uses_rescaling_uniform{};
+ bool uses_cbuf_indirect{};
IR::Type used_constant_buffer_types{};
IR::Type used_storage_buffer_types{};
+ IR::Type used_indirect_cbuf_types{};
u32 constant_buffer_mask{};
std::array<u32, MAX_CBUFS> constant_buffer_used_sizes{};
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 5d6d217bb..54a902f56 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -7,6 +7,7 @@
#include "common/assert.h"
#include "core/core.h"
#include "core/core_timing.h"
+#include "video_core/dirty_flags.h"
#include "video_core/engines/maxwell_3d.h"
#include "video_core/gpu.h"
#include "video_core/memory_manager.h"
@@ -195,7 +196,7 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 13:
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 14:
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 15:
- return StartCBData(method);
+ return ProcessCBData(argument);
case MAXWELL3D_REG_INDEX(cb_bind[0]):
return ProcessCBBind(0);
case MAXWELL3D_REG_INDEX(cb_bind[1]):
@@ -208,6 +209,14 @@ void Maxwell3D::ProcessMethodCall(u32 method, u32 argument, u32 nonshadow_argume
return ProcessCBBind(4);
case MAXWELL3D_REG_INDEX(draw.vertex_end_gl):
return DrawArrays();
+ case MAXWELL3D_REG_INDEX(small_index):
+ regs.index_array.count = regs.small_index.count;
+ regs.index_array.first = regs.small_index.first;
+ dirty.flags[VideoCommon::Dirty::IndexBuffer] = true;
+ return DrawArrays();
+ case MAXWELL3D_REG_INDEX(topology_override):
+ use_topology_override = true;
+ return;
case MAXWELL3D_REG_INDEX(clear_buffers):
return ProcessClearBuffers();
case MAXWELL3D_REG_INDEX(query.query_get):
@@ -248,14 +257,6 @@ void Maxwell3D::CallMacroMethod(u32 method, const std::vector<u32>& parameters)
}
void Maxwell3D::CallMethod(u32 method, u32 method_argument, bool is_last_call) {
- if (method == cb_data_state.current) {
- regs.reg_array[method] = method_argument;
- ProcessCBData(method_argument);
- return;
- } else if (cb_data_state.current != null_cb_data) {
- FinishCBData();
- }
-
// It is an error to write to a register other than the current macro's ARG register before it
// has finished execution.
if (executing_macro != 0) {
@@ -302,7 +303,7 @@ void Maxwell3D::CallMultiMethod(u32 method, const u32* base_start, u32 amount,
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 13:
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 14:
case MAXWELL3D_REG_INDEX(const_buffer.cb_data) + 15:
- ProcessCBMultiData(method, base_start, amount);
+ ProcessCBMultiData(base_start, amount);
break;
default:
for (std::size_t i = 0; i < amount; i++) {
@@ -360,6 +361,35 @@ void Maxwell3D::CallMethodFromMME(u32 method, u32 method_argument) {
}
}
+void Maxwell3D::ProcessTopologyOverride() {
+ using PrimitiveTopology = Maxwell3D::Regs::PrimitiveTopology;
+ using PrimitiveTopologyOverride = Maxwell3D::Regs::PrimitiveTopologyOverride;
+
+ PrimitiveTopology topology{};
+
+ switch (regs.topology_override) {
+ case PrimitiveTopologyOverride::None:
+ topology = regs.draw.topology;
+ break;
+ case PrimitiveTopologyOverride::Points:
+ topology = PrimitiveTopology::Points;
+ break;
+ case PrimitiveTopologyOverride::Lines:
+ topology = PrimitiveTopology::Lines;
+ break;
+ case PrimitiveTopologyOverride::LineStrip:
+ topology = PrimitiveTopology::LineStrip;
+ break;
+ default:
+ topology = static_cast<PrimitiveTopology>(regs.topology_override);
+ break;
+ }
+
+ if (use_topology_override) {
+ regs.draw.topology.Assign(topology);
+ }
+}
+
void Maxwell3D::FlushMMEInlineDraw() {
LOG_TRACE(HW_GPU, "called, topology={}, count={}", regs.draw.topology.Value(),
regs.vertex_buffer.count);
@@ -370,6 +400,8 @@ void Maxwell3D::FlushMMEInlineDraw() {
ASSERT_MSG(!regs.draw.instance_next || !regs.draw.instance_cont,
"Illegal combination of instancing parameters");
+ ProcessTopologyOverride();
+
const bool is_indexed = mme_draw.current_mode == MMEDrawMode::Indexed;
if (ShouldExecute()) {
rasterizer->Draw(is_indexed, true);
@@ -529,6 +561,8 @@ void Maxwell3D::DrawArrays() {
ASSERT_MSG(!regs.draw.instance_next || !regs.draw.instance_cont,
"Illegal combination of instancing parameters");
+ ProcessTopologyOverride();
+
if (regs.draw.instance_next) {
// Increment the current instance *before* drawing.
state.current_instance += 1;
@@ -587,46 +621,7 @@ void Maxwell3D::ProcessCBBind(size_t stage_index) {
rasterizer->BindGraphicsUniformBuffer(stage_index, bind_data.index, gpu_addr, size);
}
-void Maxwell3D::ProcessCBData(u32 value) {
- const u32 id = cb_data_state.id;
- cb_data_state.buffer[id][cb_data_state.counter] = value;
- // Increment the current buffer position.
- regs.const_buffer.cb_pos = regs.const_buffer.cb_pos + 4;
- cb_data_state.counter++;
-}
-
-void Maxwell3D::StartCBData(u32 method) {
- constexpr u32 first_cb_data = MAXWELL3D_REG_INDEX(const_buffer.cb_data);
- cb_data_state.start_pos = regs.const_buffer.cb_pos;
- cb_data_state.id = method - first_cb_data;
- cb_data_state.current = method;
- cb_data_state.counter = 0;
- ProcessCBData(regs.const_buffer.cb_data[cb_data_state.id]);
-}
-
-void Maxwell3D::ProcessCBMultiData(u32 method, const u32* start_base, u32 amount) {
- if (cb_data_state.current != method) {
- if (cb_data_state.current != null_cb_data) {
- FinishCBData();
- }
- constexpr u32 first_cb_data = MAXWELL3D_REG_INDEX(const_buffer.cb_data);
- cb_data_state.start_pos = regs.const_buffer.cb_pos;
- cb_data_state.id = method - first_cb_data;
- cb_data_state.current = method;
- cb_data_state.counter = 0;
- }
- const std::size_t id = cb_data_state.id;
- const std::size_t size = amount;
- std::size_t i = 0;
- for (; i < size; i++) {
- cb_data_state.buffer[id][cb_data_state.counter] = start_base[i];
- cb_data_state.counter++;
- }
- // Increment the current buffer position.
- regs.const_buffer.cb_pos = regs.const_buffer.cb_pos + 4 * amount;
-}
-
-void Maxwell3D::FinishCBData() {
+void Maxwell3D::ProcessCBMultiData(const u32* start_base, u32 amount) {
// Write the input value to the current const buffer at the current position.
const GPUVAddr buffer_address = regs.const_buffer.BufferAddress();
ASSERT(buffer_address != 0);
@@ -634,14 +629,16 @@ void Maxwell3D::FinishCBData() {
// Don't allow writing past the end of the buffer.
ASSERT(regs.const_buffer.cb_pos <= regs.const_buffer.cb_size);
- const GPUVAddr address{buffer_address + cb_data_state.start_pos};
- const std::size_t size = regs.const_buffer.cb_pos - cb_data_state.start_pos;
+ const GPUVAddr address{buffer_address + regs.const_buffer.cb_pos};
+ const size_t copy_size = amount * sizeof(u32);
+ memory_manager.WriteBlock(address, start_base, copy_size);
- const u32 id = cb_data_state.id;
- memory_manager.WriteBlock(address, cb_data_state.buffer[id].data(), size);
+ // Increment the current buffer position.
+ regs.const_buffer.cb_pos += static_cast<u32>(copy_size);
+}
- cb_data_state.id = null_cb_data;
- cb_data_state.current = null_cb_data;
+void Maxwell3D::ProcessCBData(u32 value) {
+ ProcessCBMultiData(&value, 1);
}
Texture::TICEntry Maxwell3D::GetTICEntry(u32 tic_index) const {
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index dc9df6c8b..357a74c70 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -367,6 +367,22 @@ public:
Patches = 0xe,
};
+ // Constants as from NVC0_3D_UNK1970_D3D
+ // https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h#L1598
+ enum class PrimitiveTopologyOverride : u32 {
+ None = 0x0,
+ Points = 0x1,
+ Lines = 0x2,
+ LineStrip = 0x3,
+ Triangles = 0x4,
+ TriangleStrip = 0x5,
+ LinesAdjacency = 0xa,
+ LineStripAdjacency = 0xb,
+ TrianglesAdjacency = 0xc,
+ TriangleStripAdjacency = 0xd,
+ Patches = 0xe,
+ };
+
enum class IndexFormat : u32 {
UnsignedByte = 0x0,
UnsignedShort = 0x1,
@@ -1200,7 +1216,12 @@ public:
}
} index_array;
- INSERT_PADDING_WORDS_NOINIT(0x7);
+ union {
+ BitField<0, 16, u32> first;
+ BitField<16, 16, u32> count;
+ } small_index;
+
+ INSERT_PADDING_WORDS_NOINIT(0x6);
INSERT_PADDING_WORDS_NOINIT(0x1F);
@@ -1244,7 +1265,11 @@ public:
BitField<11, 1, u32> depth_clamp_disabled;
} view_volume_clip_control;
- INSERT_PADDING_WORDS_NOINIT(0x1F);
+ INSERT_PADDING_WORDS_NOINIT(0xC);
+
+ PrimitiveTopologyOverride topology_override;
+
+ INSERT_PADDING_WORDS_NOINIT(0x12);
u32 depth_bounds_enable;
@@ -1520,10 +1545,8 @@ private:
void ProcessSyncPoint();
/// Handles a write to the CB_DATA[i] register.
- void StartCBData(u32 method);
void ProcessCBData(u32 value);
- void ProcessCBMultiData(u32 method, const u32* start_base, u32 amount);
- void FinishCBData();
+ void ProcessCBMultiData(const u32* start_base, u32 amount);
/// Handles a write to the CB_BIND register.
void ProcessCBBind(size_t stage_index);
@@ -1531,6 +1554,9 @@ private:
/// Handles a write to the VERTEX_END_GL register, triggering a draw.
void DrawArrays();
+ /// Handles use of topology overrides (e.g., to avoid using a topology assigned from a macro)
+ void ProcessTopologyOverride();
+
// Handles a instance drawcall from MME
void StepInstance(MMEDrawMode expected_mode, u32 count);
@@ -1555,20 +1581,10 @@ private:
/// Interpreter for the macro codes uploaded to the GPU.
std::unique_ptr<MacroEngine> macro_engine;
- static constexpr u32 null_cb_data = 0xFFFFFFFF;
- struct CBDataState {
- static constexpr size_t inline_size = 0x4000;
- std::array<std::array<u32, inline_size>, 16> buffer;
- u32 current{null_cb_data};
- u32 id{null_cb_data};
- u32 start_pos{};
- u32 counter{};
- };
- CBDataState cb_data_state;
-
Upload::State upload_state;
bool execute_on{true};
+ bool use_topology_override{false};
};
#define ASSERT_REG_POSITION(field_name, position) \
@@ -1685,6 +1701,7 @@ ASSERT_REG_POSITION(draw, 0x585);
ASSERT_REG_POSITION(primitive_restart, 0x591);
ASSERT_REG_POSITION(provoking_vertex_last, 0x5A1);
ASSERT_REG_POSITION(index_array, 0x5F2);
+ASSERT_REG_POSITION(small_index, 0x5F9);
ASSERT_REG_POSITION(polygon_offset_clamp, 0x61F);
ASSERT_REG_POSITION(instanced_arrays, 0x620);
ASSERT_REG_POSITION(vp_point_size, 0x644);
@@ -1694,6 +1711,7 @@ ASSERT_REG_POSITION(cull_face, 0x648);
ASSERT_REG_POSITION(pixel_center_integer, 0x649);
ASSERT_REG_POSITION(viewport_transform_enabled, 0x64B);
ASSERT_REG_POSITION(view_volume_clip_control, 0x64F);
+ASSERT_REG_POSITION(topology_override, 0x65C);
ASSERT_REG_POSITION(depth_bounds_enable, 0x66F);
ASSERT_REG_POSITION(logic_op, 0x671);
ASSERT_REG_POSITION(clear_buffers, 0x674);
diff --git a/src/video_core/engines/maxwell_dma.cpp b/src/video_core/engines/maxwell_dma.cpp
index 67388d980..1fc1358bc 100644
--- a/src/video_core/engines/maxwell_dma.cpp
+++ b/src/video_core/engines/maxwell_dma.cpp
@@ -53,7 +53,6 @@ void MaxwellDMA::Launch() {
// TODO(Subv): Perform more research and implement all features of this engine.
const LaunchDMA& launch = regs.launch_dma;
- ASSERT(launch.semaphore_type == LaunchDMA::SemaphoreType::NONE);
ASSERT(launch.interrupt_type == LaunchDMA::InterruptType::NONE);
ASSERT(launch.data_transfer_type == LaunchDMA::DataTransferType::NON_PIPELINED);
ASSERT(regs.dst_params.origin.x == 0);
@@ -79,6 +78,7 @@ void MaxwellDMA::Launch() {
CopyPitchToBlockLinear();
}
}
+ ReleaseSemaphore();
}
void MaxwellDMA::CopyPitchToPitch() {
@@ -244,4 +244,22 @@ void MaxwellDMA::FastCopyBlockLinearToPitch() {
memory_manager.WriteBlock(regs.offset_out, write_buffer.data(), dst_size);
}
+void MaxwellDMA::ReleaseSemaphore() {
+ const auto type = regs.launch_dma.semaphore_type;
+ const GPUVAddr address = regs.semaphore.address;
+ switch (type) {
+ case LaunchDMA::SemaphoreType::NONE:
+ break;
+ case LaunchDMA::SemaphoreType::RELEASE_ONE_WORD_SEMAPHORE:
+ memory_manager.Write<u32>(address, regs.semaphore.payload);
+ break;
+ case LaunchDMA::SemaphoreType::RELEASE_FOUR_WORD_SEMAPHORE:
+ memory_manager.Write<u64>(address, static_cast<u64>(regs.semaphore.payload));
+ memory_manager.Write<u64>(address + 8, system.GPU().GetTicks());
+ break;
+ default:
+ UNREACHABLE_MSG("Unknown semaphore type: {}", static_cast<u32>(type.Value()));
+ }
+}
+
} // namespace Tegra::Engines
diff --git a/src/video_core/engines/maxwell_dma.h b/src/video_core/engines/maxwell_dma.h
index a04514425..2692cac8a 100644
--- a/src/video_core/engines/maxwell_dma.h
+++ b/src/video_core/engines/maxwell_dma.h
@@ -224,6 +224,8 @@ private:
void FastCopyBlockLinearToPitch();
+ void ReleaseSemaphore();
+
Core::System& system;
MemoryManager& memory_manager;
diff --git a/src/video_core/fence_manager.h b/src/video_core/fence_manager.h
index 34dc6c596..f80d62c80 100644
--- a/src/video_core/fence_manager.h
+++ b/src/video_core/fence_manager.h
@@ -8,8 +8,6 @@
#include <queue>
#include "common/common_types.h"
-#include "common/settings.h"
-#include "core/core.h"
#include "video_core/delayed_destruction_ring.h"
#include "video_core/gpu.h"
#include "video_core/memory_manager.h"
diff --git a/src/video_core/host_shaders/CMakeLists.txt b/src/video_core/host_shaders/CMakeLists.txt
index fd3e41434..af05d47d1 100644
--- a/src/video_core/host_shaders/CMakeLists.txt
+++ b/src/video_core/host_shaders/CMakeLists.txt
@@ -14,6 +14,7 @@ set(SHADER_FILES
convert_d24s8_to_abgr8.frag
convert_depth_to_float.frag
convert_float_to_depth.frag
+ convert_s8d24_to_abgr8.frag
full_screen_triangle.vert
fxaa.frag
fxaa.vert
diff --git a/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag b/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag
new file mode 100644
index 000000000..c8a1683b8
--- /dev/null
+++ b/src/video_core/host_shaders/convert_s8d24_to_abgr8.frag
@@ -0,0 +1,23 @@
+// Copyright 2022 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#version 450
+
+layout(binding = 0) uniform sampler2D depth_tex;
+layout(binding = 1) uniform isampler2D stencil_tex;
+
+layout(location = 0) out vec4 color;
+
+void main() {
+ ivec2 coord = ivec2(gl_FragCoord.xy);
+ uint depth = uint(textureLod(depth_tex, coord, 0).r * (exp2(24.0) - 1.0f));
+ uint stencil = uint(textureLod(stencil_tex, coord, 0).r);
+
+ highp uint depth_val =
+ uint(textureLod(depth_tex, coord, 0).r * (exp2(32.0) - 1.0));
+ lowp uint stencil_val = textureLod(stencil_tex, coord, 0).r;
+ highp uvec4 components =
+ uvec4((uvec3(depth_val) >> uvec3(24u, 16u, 8u)) & 0x000000FFu, stencil_val);
+ color.rgba = vec4(components) / (exp2(8.0) - 1.0);
+}
diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h
index 392f82eb7..0173b54d8 100644
--- a/src/video_core/query_cache.h
+++ b/src/video_core/query_cache.h
@@ -18,7 +18,6 @@
#include "common/assert.h"
#include "common/settings.h"
-#include "core/core.h"
#include "video_core/engines/maxwell_3d.h"
#include "video_core/gpu.h"
#include "video_core/memory_manager.h"
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index bb204454e..c5f974080 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -5,9 +5,10 @@
#pragma once
#include <atomic>
+#include <functional>
#include <memory>
-#include <optional>
+#include "common/common_funcs.h"
#include "common/common_types.h"
#include "core/frontend/emu_window.h"
#include "video_core/gpu.h"
@@ -28,8 +29,11 @@ struct RendererSettings {
Layout::FramebufferLayout screenshot_framebuffer_layout;
};
-class RendererBase : NonCopyable {
+class RendererBase {
public:
+ YUZU_NON_COPYABLE(RendererBase);
+ YUZU_NON_MOVEABLE(RendererBase);
+
explicit RendererBase(Core::Frontend::EmuWindow& window,
std::unique_ptr<Core::Frontend::GraphicsContext> context);
virtual ~RendererBase();
diff --git a/src/video_core/renderer_opengl/gl_fence_manager.cpp b/src/video_core/renderer_opengl/gl_fence_manager.cpp
index 151290101..293ad7d59 100644
--- a/src/video_core/renderer_opengl/gl_fence_manager.cpp
+++ b/src/video_core/renderer_opengl/gl_fence_manager.cpp
@@ -31,9 +31,8 @@ bool GLInnerFence::IsSignaled() const {
return true;
}
ASSERT(sync_object.handle != 0);
- GLsizei length;
GLint sync_status;
- glGetSynciv(sync_object.handle, GL_SYNC_STATUS, sizeof(GLint), &length, &sync_status);
+ glGetSynciv(sync_object.handle, GL_SYNC_STATUS, 1, nullptr, &sync_status);
return sync_status == GL_SIGNALED;
}
diff --git a/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp b/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
index f8495896c..9e6732abd 100644
--- a/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
+++ b/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
@@ -243,10 +243,6 @@ GraphicsPipeline::GraphicsPipeline(
case Settings::ShaderBackend::GLASM:
if (!sources[stage].empty()) {
assembly_programs[stage] = CompileProgram(sources[stage], AssemblyStage(stage));
- if (in_parallel) {
- // Make sure program is built before continuing when building in parallel
- glGetString(GL_PROGRAM_ERROR_STRING_NV);
- }
}
break;
case Settings::ShaderBackend::SPIRV:
@@ -256,20 +252,18 @@ GraphicsPipeline::GraphicsPipeline(
break;
}
}
- if (in_parallel && backend != Settings::ShaderBackend::GLASM) {
- // Make sure programs have built if we are building shaders in parallel
- for (OGLProgram& program : source_programs) {
- if (program.handle != 0) {
- GLint status{};
- glGetProgramiv(program.handle, GL_LINK_STATUS, &status);
- }
- }
+ if (in_parallel) {
+ std::lock_guard lock{built_mutex};
+ built_fence.Create();
+ // Flush this context to ensure compilation commands and fence are in the GPU pipe.
+ glFlush();
+ built_condvar.notify_one();
+ } else {
+ is_built = true;
}
if (shader_notify) {
shader_notify->MarkShaderComplete();
}
- is_built = true;
- built_condvar.notify_one();
}};
if (thread_worker) {
thread_worker->QueueWork(std::move(func));
@@ -440,7 +434,7 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) {
buffer_cache.UpdateGraphicsBuffers(is_indexed);
buffer_cache.BindHostGeometryBuffers(is_indexed);
- if (!is_built.load(std::memory_order::relaxed)) {
+ if (!IsBuilt()) {
WaitForBuild();
}
const bool use_assembly{assembly_programs[0].handle != 0};
@@ -585,8 +579,26 @@ void GraphicsPipeline::GenerateTransformFeedbackState() {
}
void GraphicsPipeline::WaitForBuild() {
- std::unique_lock lock{built_mutex};
- built_condvar.wait(lock, [this] { return is_built.load(std::memory_order::relaxed); });
+ if (built_fence.handle == 0) {
+ std::unique_lock lock{built_mutex};
+ built_condvar.wait(lock, [this] { return built_fence.handle != 0; });
+ }
+ ASSERT(glClientWaitSync(built_fence.handle, 0, GL_TIMEOUT_IGNORED) != GL_WAIT_FAILED);
+ is_built = true;
+}
+
+bool GraphicsPipeline::IsBuilt() noexcept {
+ if (is_built) {
+ return true;
+ }
+ if (built_fence.handle == 0) {
+ return false;
+ }
+ // Timeout of zero means this is non-blocking
+ const auto sync_status = glClientWaitSync(built_fence.handle, 0, 0);
+ ASSERT(sync_status != GL_WAIT_FAILED);
+ is_built = sync_status != GL_TIMEOUT_EXPIRED;
+ return is_built;
}
} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_graphics_pipeline.h b/src/video_core/renderer_opengl/gl_graphics_pipeline.h
index 4e28d9a42..311d49f3f 100644
--- a/src/video_core/renderer_opengl/gl_graphics_pipeline.h
+++ b/src/video_core/renderer_opengl/gl_graphics_pipeline.h
@@ -100,9 +100,7 @@ public:
return writes_global_memory;
}
- [[nodiscard]] bool IsBuilt() const noexcept {
- return is_built.load(std::memory_order::relaxed);
- }
+ [[nodiscard]] bool IsBuilt() noexcept;
template <typename Spec>
static auto MakeConfigureSpecFunc() {
@@ -154,7 +152,8 @@ private:
std::mutex built_mutex;
std::condition_variable built_condvar;
- std::atomic_bool is_built{false};
+ OGLSync built_fence{};
+ bool is_built{false};
};
} // namespace OpenGL
diff --git a/src/video_core/renderer_opengl/gl_resource_manager.h b/src/video_core/renderer_opengl/gl_resource_manager.h
index b2d5bfd3b..84e07f8bd 100644
--- a/src/video_core/renderer_opengl/gl_resource_manager.h
+++ b/src/video_core/renderer_opengl/gl_resource_manager.h
@@ -7,12 +7,14 @@
#include <string_view>
#include <utility>
#include <glad/glad.h>
-#include "common/common_types.h"
+#include "common/common_funcs.h"
namespace OpenGL {
-class OGLRenderbuffer : private NonCopyable {
+class OGLRenderbuffer final {
public:
+ YUZU_NON_COPYABLE(OGLRenderbuffer);
+
OGLRenderbuffer() = default;
OGLRenderbuffer(OGLRenderbuffer&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -36,8 +38,10 @@ public:
GLuint handle = 0;
};
-class OGLTexture : private NonCopyable {
+class OGLTexture final {
public:
+ YUZU_NON_COPYABLE(OGLTexture);
+
OGLTexture() = default;
OGLTexture(OGLTexture&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -61,8 +65,10 @@ public:
GLuint handle = 0;
};
-class OGLTextureView : private NonCopyable {
+class OGLTextureView final {
public:
+ YUZU_NON_COPYABLE(OGLTextureView);
+
OGLTextureView() = default;
OGLTextureView(OGLTextureView&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -86,8 +92,10 @@ public:
GLuint handle = 0;
};
-class OGLSampler : private NonCopyable {
+class OGLSampler final {
public:
+ YUZU_NON_COPYABLE(OGLSampler);
+
OGLSampler() = default;
OGLSampler(OGLSampler&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -111,8 +119,10 @@ public:
GLuint handle = 0;
};
-class OGLShader : private NonCopyable {
+class OGLShader final {
public:
+ YUZU_NON_COPYABLE(OGLShader);
+
OGLShader() = default;
OGLShader(OGLShader&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -132,8 +142,10 @@ public:
GLuint handle = 0;
};
-class OGLProgram : private NonCopyable {
+class OGLProgram final {
public:
+ YUZU_NON_COPYABLE(OGLProgram);
+
OGLProgram() = default;
OGLProgram(OGLProgram&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -154,8 +166,10 @@ public:
GLuint handle = 0;
};
-class OGLAssemblyProgram : private NonCopyable {
+class OGLAssemblyProgram final {
public:
+ YUZU_NON_COPYABLE(OGLAssemblyProgram);
+
OGLAssemblyProgram() = default;
OGLAssemblyProgram(OGLAssemblyProgram&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -176,8 +190,10 @@ public:
GLuint handle = 0;
};
-class OGLPipeline : private NonCopyable {
+class OGLPipeline final {
public:
+ YUZU_NON_COPYABLE(OGLPipeline);
+
OGLPipeline() = default;
OGLPipeline(OGLPipeline&& o) noexcept : handle{std::exchange<GLuint>(o.handle, 0)} {}
@@ -198,8 +214,10 @@ public:
GLuint handle = 0;
};
-class OGLBuffer : private NonCopyable {
+class OGLBuffer final {
public:
+ YUZU_NON_COPYABLE(OGLBuffer);
+
OGLBuffer() = default;
OGLBuffer(OGLBuffer&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -223,8 +241,10 @@ public:
GLuint handle = 0;
};
-class OGLSync : private NonCopyable {
+class OGLSync final {
public:
+ YUZU_NON_COPYABLE(OGLSync);
+
OGLSync() = default;
OGLSync(OGLSync&& o) noexcept : handle(std::exchange(o.handle, nullptr)) {}
@@ -247,8 +267,10 @@ public:
GLsync handle = 0;
};
-class OGLFramebuffer : private NonCopyable {
+class OGLFramebuffer final {
public:
+ YUZU_NON_COPYABLE(OGLFramebuffer);
+
OGLFramebuffer() = default;
OGLFramebuffer(OGLFramebuffer&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
@@ -272,8 +294,10 @@ public:
GLuint handle = 0;
};
-class OGLQuery : private NonCopyable {
+class OGLQuery final {
public:
+ YUZU_NON_COPYABLE(OGLQuery);
+
OGLQuery() = default;
OGLQuery(OGLQuery&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
diff --git a/src/video_core/renderer_opengl/gl_state_tracker.h b/src/video_core/renderer_opengl/gl_state_tracker.h
index 5864c7c07..550ed6d36 100644
--- a/src/video_core/renderer_opengl/gl_state_tracker.h
+++ b/src/video_core/renderer_opengl/gl_state_tracker.h
@@ -9,7 +9,6 @@
#include <glad/glad.h>
#include "common/common_types.h"
-#include "core/core.h"
#include "video_core/dirty_flags.h"
#include "video_core/engines/maxwell_3d.h"
diff --git a/src/video_core/renderer_opengl/maxwell_to_gl.h b/src/video_core/renderer_opengl/maxwell_to_gl.h
index daba42ed9..db5bf1d30 100644
--- a/src/video_core/renderer_opengl/maxwell_to_gl.h
+++ b/src/video_core/renderer_opengl/maxwell_to_gl.h
@@ -184,6 +184,8 @@ inline GLenum VertexFormat(Maxwell::VertexAttribute attrib) {
case Maxwell::VertexAttribute::Size::Size_32_32_32:
case Maxwell::VertexAttribute::Size::Size_32_32_32_32:
return GL_FLOAT;
+ case Maxwell::VertexAttribute::Size::Size_11_11_10:
+ return GL_UNSIGNED_INT_10F_11F_11F_REV;
default:
break;
}
diff --git a/src/video_core/renderer_vulkan/blit_image.cpp b/src/video_core/renderer_vulkan/blit_image.cpp
index 2c3914459..ec03cca38 100644
--- a/src/video_core/renderer_vulkan/blit_image.cpp
+++ b/src/video_core/renderer_vulkan/blit_image.cpp
@@ -9,6 +9,7 @@
#include "video_core/host_shaders/convert_d24s8_to_abgr8_frag_spv.h"
#include "video_core/host_shaders/convert_depth_to_float_frag_spv.h"
#include "video_core/host_shaders/convert_float_to_depth_frag_spv.h"
+#include "video_core/host_shaders/convert_s8d24_to_abgr8_frag_spv.h"
#include "video_core/host_shaders/full_screen_triangle_vert_spv.h"
#include "video_core/host_shaders/vulkan_blit_color_float_frag_spv.h"
#include "video_core/host_shaders/vulkan_blit_depth_stencil_frag_spv.h"
@@ -370,6 +371,7 @@ BlitImageHelper::BlitImageHelper(const Device& device_, VKScheduler& scheduler_,
convert_float_to_depth_frag(BuildShader(device, CONVERT_FLOAT_TO_DEPTH_FRAG_SPV)),
convert_abgr8_to_d24s8_frag(BuildShader(device, CONVERT_ABGR8_TO_D24S8_FRAG_SPV)),
convert_d24s8_to_abgr8_frag(BuildShader(device, CONVERT_D24S8_TO_ABGR8_FRAG_SPV)),
+ convert_s8d24_to_abgr8_frag(BuildShader(device, CONVERT_S8D24_TO_ABGR8_FRAG_SPV)),
linear_sampler(device.GetLogical().CreateSampler(SAMPLER_CREATE_INFO<VK_FILTER_LINEAR>)),
nearest_sampler(device.GetLogical().CreateSampler(SAMPLER_CREATE_INFO<VK_FILTER_NEAREST>)) {
if (device.IsExtShaderStencilExportSupported()) {
@@ -474,6 +476,13 @@ void BlitImageHelper::ConvertD24S8ToABGR8(const Framebuffer* dst_framebuffer,
ConvertDepthStencil(*convert_d24s8_to_abgr8_pipeline, dst_framebuffer, src_image_view);
}
+void BlitImageHelper::ConvertS8D24ToABGR8(const Framebuffer* dst_framebuffer,
+ ImageView& src_image_view) {
+ ConvertPipelineColorTargetEx(convert_s8d24_to_abgr8_pipeline, dst_framebuffer->RenderPass(),
+ convert_s8d24_to_abgr8_frag);
+ ConvertDepthStencil(*convert_s8d24_to_abgr8_pipeline, dst_framebuffer, src_image_view);
+}
+
void BlitImageHelper::Convert(VkPipeline pipeline, const Framebuffer* dst_framebuffer,
const ImageView& src_image_view) {
const VkPipelineLayout layout = *one_texture_pipeline_layout;
diff --git a/src/video_core/renderer_vulkan/blit_image.h b/src/video_core/renderer_vulkan/blit_image.h
index 85e7dca5b..1a3944179 100644
--- a/src/video_core/renderer_vulkan/blit_image.h
+++ b/src/video_core/renderer_vulkan/blit_image.h
@@ -56,6 +56,8 @@ public:
void ConvertD24S8ToABGR8(const Framebuffer* dst_framebuffer, ImageView& src_image_view);
+ void ConvertS8D24ToABGR8(const Framebuffer* dst_framebuffer, ImageView& src_image_view);
+
private:
void Convert(VkPipeline pipeline, const Framebuffer* dst_framebuffer,
const ImageView& src_image_view);
@@ -99,6 +101,7 @@ private:
vk::ShaderModule convert_float_to_depth_frag;
vk::ShaderModule convert_abgr8_to_d24s8_frag;
vk::ShaderModule convert_d24s8_to_abgr8_frag;
+ vk::ShaderModule convert_s8d24_to_abgr8_frag;
vk::Sampler linear_sampler;
vk::Sampler nearest_sampler;
@@ -112,6 +115,7 @@ private:
vk::Pipeline convert_r16_to_d16_pipeline;
vk::Pipeline convert_abgr8_to_d24s8_pipeline;
vk::Pipeline convert_d24s8_to_abgr8_pipeline;
+ vk::Pipeline convert_s8d24_to_abgr8_pipeline;
};
} // namespace Vulkan
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
index 751e4792b..1c136c410 100644
--- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
+++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
@@ -495,6 +495,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib
return VK_FORMAT_R32G32B32_SFLOAT;
case Maxwell::VertexAttribute::Size::Size_32_32_32_32:
return VK_FORMAT_R32G32B32A32_SFLOAT;
+ case Maxwell::VertexAttribute::Size::Size_11_11_10:
+ return VK_FORMAT_B10G11R11_UFLOAT_PACK32;
default:
break;
}
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
index c71a1f44d..621a6a071 100644
--- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp
+++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
@@ -100,6 +100,8 @@ VkFormat GetFormat(const Tegra::FramebufferConfig& framebuffer) {
return VK_FORMAT_A8B8G8R8_UNORM_PACK32;
case Tegra::FramebufferConfig::PixelFormat::RGB565_UNORM:
return VK_FORMAT_R5G6B5_UNORM_PACK16;
+ case Tegra::FramebufferConfig::PixelFormat::B8G8R8A8_UNORM:
+ return VK_FORMAT_B8G8R8A8_UNORM;
default:
UNIMPLEMENTED_MSG("Unknown framebuffer pixel format: {}",
static_cast<u32>(framebuffer.pixel_format));
diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.cpp b/src/video_core/renderer_vulkan/vk_compute_pass.cpp
index 3e96c0f60..4d73427b4 100644
--- a/src/video_core/renderer_vulkan/vk_compute_pass.cpp
+++ b/src/video_core/renderer_vulkan/vk_compute_pass.cpp
@@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <array>
#include <cstring>
#include <memory>
#include <optional>
@@ -292,7 +293,7 @@ std::pair<VkBuffer, VkDeviceSize> QuadIndexedPass::Assemble(
.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT,
.dstAccessMask = VK_ACCESS_INDEX_READ_BIT,
};
- const std::array push_constants{base_vertex, index_shift};
+ const std::array<u32, 2> push_constants{base_vertex, index_shift};
const VkDescriptorSet set = descriptor_allocator.Commit();
device.GetLogical().UpdateDescriptorSet(set, *descriptor_template, descriptor_data);
cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, *pipeline);
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp
index 3bfdf41ba..7d9d4f7ba 100644
--- a/src/video_core/renderer_vulkan/vk_scheduler.cpp
+++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp
@@ -140,12 +140,12 @@ bool VKScheduler::UpdateRescaling(bool is_rescaling) {
void VKScheduler::WorkerThread(std::stop_token stop_token) {
Common::SetCurrentThreadName("yuzu:VulkanWorker");
do {
- if (work_queue.empty()) {
- wait_cv.notify_all();
- }
std::unique_ptr<CommandChunk> work;
{
std::unique_lock lock{work_mutex};
+ if (work_queue.empty()) {
+ wait_cv.notify_all();
+ }
work_cv.wait(lock, stop_token, [this] { return !work_queue.empty(); });
if (stop_token.stop_requested()) {
continue;
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h
index 1b06c9296..e69aa136b 100644
--- a/src/video_core/renderer_vulkan/vk_scheduler.h
+++ b/src/video_core/renderer_vulkan/vk_scheduler.h
@@ -146,6 +146,7 @@ private:
using FuncType = TypedCommand<T>;
static_assert(sizeof(FuncType) < sizeof(data), "Lambda is too large");
+ recorded_counts++;
command_offset = Common::AlignUp(command_offset, alignof(FuncType));
if (command_offset > sizeof(data) - sizeof(FuncType)) {
return false;
@@ -167,7 +168,7 @@ private:
}
bool Empty() const {
- return command_offset == 0;
+ return recorded_counts == 0;
}
bool HasSubmit() const {
@@ -178,6 +179,7 @@ private:
Command* first = nullptr;
Command* last = nullptr;
+ size_t recorded_counts = 0;
size_t command_offset = 0;
bool submit = false;
alignas(std::max_align_t) std::array<u8, 0x8000> data{};
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.h b/src/video_core/renderer_vulkan/vk_state_tracker.h
index 40a149832..8240c83e1 100644
--- a/src/video_core/renderer_vulkan/vk_state_tracker.h
+++ b/src/video_core/renderer_vulkan/vk_state_tracker.h
@@ -8,7 +8,6 @@
#include <limits>
#include "common/common_types.h"
-#include "core/core.h"
#include "video_core/dirty_flags.h"
#include "video_core/engines/maxwell_3d.h"
diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
index 0ba56ff1e..8101eb42c 100644
--- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp
@@ -554,10 +554,12 @@ void CopyBufferToImage(vk::CommandBuffer cmdbuf, VkBuffer src_buffer, VkImage im
};
}
-[[nodiscard]] bool IsFormatFlipped(PixelFormat format) {
+[[nodiscard]] bool IsFormatFlipped(PixelFormat format, bool emulate_bgr565) {
switch (format) {
case PixelFormat::A1B5G5R5_UNORM:
return true;
+ case PixelFormat::B5G6R5_UNORM:
+ return emulate_bgr565;
default:
return false;
}
@@ -1068,6 +1070,9 @@ void TextureCacheRuntime::ConvertImage(Framebuffer* dst, ImageView& dst_view, Im
if (src_view.format == PixelFormat::S8_UINT_D24_UNORM) {
return blit_image_helper.ConvertD24S8ToABGR8(dst, src_view);
}
+ if (src_view.format == PixelFormat::D24_UNORM_S8_UINT) {
+ return blit_image_helper.ConvertS8D24ToABGR8(dst, src_view);
+ }
break;
case PixelFormat::R32_FLOAT:
if (src_view.format == PixelFormat::D32_FLOAT) {
@@ -1488,7 +1493,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI
};
if (!info.IsRenderTarget()) {
swizzle = info.Swizzle();
- if (IsFormatFlipped(format)) {
+ if (IsFormatFlipped(format, device->MustEmulateBGR565())) {
std::ranges::transform(swizzle, swizzle.begin(), SwapBlueRed);
}
if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) {
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index 329bf4def..2f2594585 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -50,6 +50,7 @@ std::unique_ptr<Tegra::GPU> CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor
gpu->BindRenderer(std::move(renderer));
return gpu;
} catch (const std::runtime_error& exception) {
+ scope.Cancel();
LOG_ERROR(HW_GPU, "Failed to initialize GPU: {}", exception.what());
return nullptr;
}
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 153702c0b..effde73c9 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -39,6 +39,11 @@ constexpr std::array DEPTH16_UNORM_STENCIL8_UINT{
VK_FORMAT_D32_SFLOAT_S8_UINT,
VK_FORMAT_UNDEFINED,
};
+
+constexpr std::array B5G6R5_UNORM_PACK16{
+ VK_FORMAT_R5G6B5_UNORM_PACK16,
+ VK_FORMAT_UNDEFINED,
+};
} // namespace Alternatives
enum class NvidiaArchitecture {
@@ -87,6 +92,8 @@ constexpr const VkFormat* GetFormatAlternatives(VkFormat format) {
return Alternatives::DEPTH24_UNORM_STENCIL8_UINT.data();
case VK_FORMAT_D16_UNORM_S8_UINT:
return Alternatives::DEPTH16_UNORM_STENCIL8_UINT.data();
+ case VK_FORMAT_B5G6R5_UNORM_PACK16:
+ return Alternatives::B5G6R5_UNORM_PACK16.data();
default:
return nullptr;
}
@@ -224,9 +231,14 @@ std::vector<std::string> GetSupportedExtensions(vk::PhysicalDevice physical) {
return supported_extensions;
}
+bool IsExtensionSupported(std::span<const std::string> supported_extensions,
+ std::string_view extension) {
+ return std::ranges::find(supported_extensions, extension) != supported_extensions.end();
+}
+
NvidiaArchitecture GetNvidiaArchitecture(vk::PhysicalDevice physical,
std::span<const std::string> exts) {
- if (std::ranges::find(exts, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME) != exts.end()) {
+ if (IsExtensionSupported(exts, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)) {
VkPhysicalDeviceFragmentShadingRatePropertiesKHR shading_rate_props{};
shading_rate_props.sType =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
@@ -239,7 +251,7 @@ NvidiaArchitecture GetNvidiaArchitecture(vk::PhysicalDevice physical,
return NvidiaArchitecture::AmpereOrNewer;
}
}
- if (std::ranges::find(exts, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME) != exts.end()) {
+ if (IsExtensionSupported(exts, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME)) {
return NvidiaArchitecture::Turing;
}
return NvidiaArchitecture::VoltaOrOlder;
@@ -604,7 +616,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
break;
}
}
- if (ext_extended_dynamic_state && driver_id == VK_DRIVER_ID_MESA_RADV) {
+ const bool is_radv = driver_id == VK_DRIVER_ID_MESA_RADV;
+ if (ext_extended_dynamic_state && is_radv) {
// Mask driver version variant
const u32 version = (properties.driverVersion << 3) >> 3;
if (version < VK_MAKE_API_VERSION(0, 21, 2, 0)) {
@@ -613,6 +626,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
ext_extended_dynamic_state = false;
}
}
+ if (ext_vertex_input_dynamic_state && is_radv) {
+ // TODO(ameerj): Blacklist only offending driver versions
+ // TODO(ameerj): Confirm if RDNA1 is affected
+ const bool is_rdna2 =
+ IsExtensionSupported(supported_extensions, VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME);
+ if (is_rdna2) {
+ LOG_WARNING(Render_Vulkan,
+ "RADV has broken VK_EXT_vertex_input_dynamic_state on RDNA2 hardware");
+ ext_vertex_input_dynamic_state = false;
+ }
+ }
sets_per_pool = 64;
const bool is_amd =
@@ -628,7 +652,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
has_broken_cube_compatibility = true;
}
}
- const bool is_amd_or_radv = is_amd || driver_id == VK_DRIVER_ID_MESA_RADV;
+ const bool is_amd_or_radv = is_amd || is_radv;
if (ext_sampler_filter_minmax && is_amd_or_radv) {
// Disable ext_sampler_filter_minmax on AMD GCN4 and lower as it is broken.
if (!is_float16_supported) {
@@ -639,6 +663,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
}
const bool is_intel_windows = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS;
+ const bool is_intel_anv = driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA;
if (ext_vertex_input_dynamic_state && is_intel_windows) {
LOG_WARNING(Render_Vulkan, "Blacklisting Intel for VK_EXT_vertex_input_dynamic_state");
ext_vertex_input_dynamic_state = false;
@@ -652,6 +677,10 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
LOG_WARNING(Render_Vulkan, "Intel proprietary drivers do not support MSAA image blits");
cant_blit_msaa = true;
}
+ if (is_intel_anv) {
+ LOG_WARNING(Render_Vulkan, "ANV driver does not support native BGR format");
+ must_emulate_bgr565 = true;
+ }
supports_d24_depth =
IsFormatSupported(VK_FORMAT_D24_UNORM_S8_UINT,
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h
index 37d140ebd..34b1add16 100644
--- a/src/video_core/vulkan_common/vulkan_device.h
+++ b/src/video_core/vulkan_common/vulkan_device.h
@@ -354,6 +354,10 @@ public:
return cant_blit_msaa;
}
+ bool MustEmulateBGR565() const {
+ return must_emulate_bgr565;
+ }
+
private:
/// Checks if the physical device is suitable.
void CheckSuitability(bool requires_swapchain) const;
@@ -448,6 +452,7 @@ private:
bool has_nsight_graphics{}; ///< Has Nsight Graphics attached
bool supports_d24_depth{}; ///< Supports D24 depth buffers.
bool cant_blit_msaa{}; ///< Does not support MSAA<->MSAA blitting.
+ bool must_emulate_bgr565{}; ///< Emulates BGR565 by swizzling RGB565 format.
// Telemetry parameters
std::string vendor_name; ///< Device's driver name.
diff --git a/src/yuzu/applets/qt_controller.cpp b/src/yuzu/applets/qt_controller.cpp
index 4239c17f5..4104928d1 100644
--- a/src/yuzu/applets/qt_controller.cpp
+++ b/src/yuzu/applets/qt_controller.cpp
@@ -257,7 +257,7 @@ void QtControllerSelectorDialog::LoadConfiguration() {
}
void QtControllerSelectorDialog::CallConfigureVibrationDialog() {
- ConfigureVibration dialog(this);
+ ConfigureVibration dialog(this, system.HIDCore());
dialog.setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint |
Qt::WindowSystemMenuHint);
diff --git a/src/yuzu/applets/qt_profile_select.cpp b/src/yuzu/applets/qt_profile_select.cpp
index 5b32da923..4cd8f7784 100644
--- a/src/yuzu/applets/qt_profile_select.cpp
+++ b/src/yuzu/applets/qt_profile_select.cpp
@@ -23,13 +23,13 @@ QString FormatUserEntryText(const QString& username, Common::UUID uuid) {
return QtProfileSelectionDialog::tr(
"%1\n%2", "%1 is the profile username, %2 is the formatted UUID (e.g. "
"00112233-4455-6677-8899-AABBCCDDEEFF))")
- .arg(username, QString::fromStdString(uuid.FormatSwitch()));
+ .arg(username, QString::fromStdString(uuid.FormattedString()));
}
QString GetImagePath(Common::UUID uuid) {
const auto path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
- fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormatSwitch());
+ fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
return QString::fromStdString(Common::FS::PathToUTF8String(path));
}
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 2c8c10c50..4b943c6ba 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -65,23 +65,25 @@ const std::array<int, 2> Config::default_stick_mod = {
// This must be in alphabetical order according to action name as it must have the same order as
// UISetting::values.shortcuts, which is alphabetically ordered.
// clang-format off
-const std::array<UISettings::Shortcut, 20> Config::default_hotkeys{{
+const std::array<UISettings::Shortcut, 22> Config::default_hotkeys{{
{QStringLiteral("Audio Mute/Unmute"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+M"), QStringLiteral("Home+Dpad_Right"), Qt::WindowShortcut}},
{QStringLiteral("Audio Volume Down"), QStringLiteral("Main Window"), {QStringLiteral("-"), QStringLiteral("Home+Dpad_Down"), Qt::ApplicationShortcut}},
{QStringLiteral("Audio Volume Up"), QStringLiteral("Main Window"), {QStringLiteral("+"), QStringLiteral("Home+Dpad_Up"), Qt::ApplicationShortcut}},
{QStringLiteral("Capture Screenshot"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+P"), QStringLiteral("Screenshot"), Qt::WidgetWithChildrenShortcut}},
+ {QStringLiteral("Change Adapting Filter"), QStringLiteral("Main Window"), {QStringLiteral("F8"), QStringLiteral("Home+L"), Qt::ApplicationShortcut}},
{QStringLiteral("Change Docked Mode"), QStringLiteral("Main Window"), {QStringLiteral("F10"), QStringLiteral("Home+X"), Qt::ApplicationShortcut}},
+ {QStringLiteral("Change GPU Accuracy"), QStringLiteral("Main Window"), {QStringLiteral("F9"), QStringLiteral("Home+R"), Qt::ApplicationShortcut}},
{QStringLiteral("Continue/Pause Emulation"), QStringLiteral("Main Window"), {QStringLiteral("F4"), QStringLiteral("Home+Plus"), Qt::WindowShortcut}},
{QStringLiteral("Exit Fullscreen"), QStringLiteral("Main Window"), {QStringLiteral("Esc"), QStringLiteral(""), Qt::WindowShortcut}},
{QStringLiteral("Exit yuzu"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+Q"), QStringLiteral("Home+Minus"), Qt::WindowShortcut}},
{QStringLiteral("Fullscreen"), QStringLiteral("Main Window"), {QStringLiteral("F11"), QStringLiteral("Home+B"), Qt::WindowShortcut}},
- {QStringLiteral("Load Amiibo"), QStringLiteral("Main Window"), {QStringLiteral("F2"), QStringLiteral("Home+A"), Qt::WidgetWithChildrenShortcut}},
{QStringLiteral("Load File"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+O"), QStringLiteral(""), Qt::WidgetWithChildrenShortcut}},
+ {QStringLiteral("Load/Remove Amiibo"), QStringLiteral("Main Window"), {QStringLiteral("F2"), QStringLiteral("Home+A"), Qt::WidgetWithChildrenShortcut}},
{QStringLiteral("Restart Emulation"), QStringLiteral("Main Window"), {QStringLiteral("F6"), QStringLiteral(""), Qt::WindowShortcut}},
{QStringLiteral("Stop Emulation"), QStringLiteral("Main Window"), {QStringLiteral("F5"), QStringLiteral(""), Qt::WindowShortcut}},
- {QStringLiteral("TAS Start/Stop"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F5"), QStringLiteral(""), Qt::ApplicationShortcut}},
- {QStringLiteral("TAS Reset"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F6"), QStringLiteral(""), Qt::ApplicationShortcut}},
{QStringLiteral("TAS Record"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F7"), QStringLiteral(""), Qt::ApplicationShortcut}},
+ {QStringLiteral("TAS Reset"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F6"), QStringLiteral(""), Qt::ApplicationShortcut}},
+ {QStringLiteral("TAS Start/Stop"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F5"), QStringLiteral(""), Qt::ApplicationShortcut}},
{QStringLiteral("Toggle Filter Bar"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F"), QStringLiteral(""), Qt::WindowShortcut}},
{QStringLiteral("Toggle Framerate Limit"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+U"), QStringLiteral("Home+Y"), Qt::ApplicationShortcut}},
{QStringLiteral("Toggle Mouse Panning"), QStringLiteral("Main Window"), {QStringLiteral("Ctrl+F9"), QStringLiteral(""), Qt::ApplicationShortcut}},
@@ -443,6 +445,7 @@ void Config::ReadCoreValues() {
qt_config->beginGroup(QStringLiteral("Core"));
ReadGlobalSetting(Settings::values.use_multi_core);
+ ReadGlobalSetting(Settings::values.use_extended_memory_layout);
qt_config->endGroup();
}
@@ -606,6 +609,7 @@ void Config::ReadCpuValues() {
ReadGlobalSetting(Settings::values.cpuopt_unsafe_ignore_standard_fpcr);
ReadGlobalSetting(Settings::values.cpuopt_unsafe_inaccurate_nan);
ReadGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check);
+ ReadGlobalSetting(Settings::values.cpuopt_unsafe_ignore_global_monitor);
if (global) {
ReadBasicSetting(Settings::values.cpu_debug_mode);
@@ -618,6 +622,8 @@ void Config::ReadCpuValues() {
ReadBasicSetting(Settings::values.cpuopt_misc_ir);
ReadBasicSetting(Settings::values.cpuopt_reduce_misalign_checks);
ReadBasicSetting(Settings::values.cpuopt_fastmem);
+ ReadBasicSetting(Settings::values.cpuopt_fastmem_exclusives);
+ ReadBasicSetting(Settings::values.cpuopt_recompile_exclusives);
}
qt_config->endGroup();
@@ -767,6 +773,7 @@ void Config::ReadUIValues() {
ReadBasicSetting(UISettings::values.callout_flags);
ReadBasicSetting(UISettings::values.show_console);
ReadBasicSetting(UISettings::values.pause_when_in_background);
+ ReadBasicSetting(UISettings::values.mute_when_in_background);
ReadBasicSetting(UISettings::values.hide_mouse);
qt_config->endGroup();
@@ -1016,6 +1023,7 @@ void Config::SaveCoreValues() {
qt_config->beginGroup(QStringLiteral("Core"));
WriteGlobalSetting(Settings::values.use_multi_core);
+ WriteGlobalSetting(Settings::values.use_extended_memory_layout);
qt_config->endGroup();
}
@@ -1134,6 +1142,7 @@ void Config::SaveCpuValues() {
WriteGlobalSetting(Settings::values.cpuopt_unsafe_ignore_standard_fpcr);
WriteGlobalSetting(Settings::values.cpuopt_unsafe_inaccurate_nan);
WriteGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check);
+ WriteGlobalSetting(Settings::values.cpuopt_unsafe_ignore_global_monitor);
if (global) {
WriteBasicSetting(Settings::values.cpu_debug_mode);
@@ -1146,6 +1155,8 @@ void Config::SaveCpuValues() {
WriteBasicSetting(Settings::values.cpuopt_misc_ir);
WriteBasicSetting(Settings::values.cpuopt_reduce_misalign_checks);
WriteBasicSetting(Settings::values.cpuopt_fastmem);
+ WriteBasicSetting(Settings::values.cpuopt_fastmem_exclusives);
+ WriteBasicSetting(Settings::values.cpuopt_recompile_exclusives);
}
qt_config->endGroup();
@@ -1295,6 +1306,7 @@ void Config::SaveUIValues() {
WriteBasicSetting(UISettings::values.callout_flags);
WriteBasicSetting(UISettings::values.show_console);
WriteBasicSetting(UISettings::values.pause_when_in_background);
+ WriteBasicSetting(UISettings::values.mute_when_in_background);
WriteBasicSetting(UISettings::values.hide_mouse);
qt_config->endGroup();
diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h
index 60b20a62f..ae3e36a11 100644
--- a/src/yuzu/configuration/config.h
+++ b/src/yuzu/configuration/config.h
@@ -46,7 +46,7 @@ public:
default_mouse_buttons;
static const std::array<int, Settings::NativeKeyboard::NumKeyboardKeys> default_keyboard_keys;
static const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> default_keyboard_mods;
- static const std::array<UISettings::Shortcut, 20> default_hotkeys;
+ static const std::array<UISettings::Shortcut, 22> default_hotkeys;
static constexpr UISettings::Theme default_theme{
#ifdef _WIN32
diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp
index f66cab5d4..bf74ccc7c 100644
--- a/src/yuzu/configuration/configure_cpu.cpp
+++ b/src/yuzu/configuration/configure_cpu.cpp
@@ -36,6 +36,7 @@ void ConfigureCpu::SetConfiguration() {
ui->cpuopt_unsafe_ignore_standard_fpcr->setEnabled(runtime_lock);
ui->cpuopt_unsafe_inaccurate_nan->setEnabled(runtime_lock);
ui->cpuopt_unsafe_fastmem_check->setEnabled(runtime_lock);
+ ui->cpuopt_unsafe_ignore_global_monitor->setEnabled(runtime_lock);
ui->cpuopt_unsafe_unfuse_fma->setChecked(Settings::values.cpuopt_unsafe_unfuse_fma.GetValue());
ui->cpuopt_unsafe_reduce_fp_error->setChecked(
@@ -46,6 +47,8 @@ void ConfigureCpu::SetConfiguration() {
Settings::values.cpuopt_unsafe_inaccurate_nan.GetValue());
ui->cpuopt_unsafe_fastmem_check->setChecked(
Settings::values.cpuopt_unsafe_fastmem_check.GetValue());
+ ui->cpuopt_unsafe_ignore_global_monitor->setChecked(
+ Settings::values.cpuopt_unsafe_ignore_global_monitor.GetValue());
if (Settings::IsConfiguringGlobal()) {
ui->accuracy->setCurrentIndex(static_cast<int>(Settings::values.cpu_accuracy.GetValue()));
@@ -82,6 +85,9 @@ void ConfigureCpu::ApplyConfiguration() {
ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_fastmem_check,
ui->cpuopt_unsafe_fastmem_check,
cpuopt_unsafe_fastmem_check);
+ ConfigurationShared::ApplyPerGameSetting(&Settings::values.cpuopt_unsafe_ignore_global_monitor,
+ ui->cpuopt_unsafe_ignore_global_monitor,
+ cpuopt_unsafe_ignore_global_monitor);
}
void ConfigureCpu::changeEvent(QEvent* event) {
@@ -120,4 +126,7 @@ void ConfigureCpu::SetupPerGameUI() {
ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_fastmem_check,
Settings::values.cpuopt_unsafe_fastmem_check,
cpuopt_unsafe_fastmem_check);
+ ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_ignore_global_monitor,
+ Settings::values.cpuopt_unsafe_ignore_global_monitor,
+ cpuopt_unsafe_ignore_global_monitor);
}
diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h
index ed9af0e9f..733e38be4 100644
--- a/src/yuzu/configuration/configure_cpu.h
+++ b/src/yuzu/configuration/configure_cpu.h
@@ -45,6 +45,7 @@ private:
ConfigurationShared::CheckState cpuopt_unsafe_ignore_standard_fpcr;
ConfigurationShared::CheckState cpuopt_unsafe_inaccurate_nan;
ConfigurationShared::CheckState cpuopt_unsafe_fastmem_check;
+ ConfigurationShared::CheckState cpuopt_unsafe_ignore_global_monitor;
const Core::System& system;
};
diff --git a/src/yuzu/configuration/configure_cpu.ui b/src/yuzu/configuration/configure_cpu.ui
index d8064db24..5d80a8c91 100644
--- a/src/yuzu/configuration/configure_cpu.ui
+++ b/src/yuzu/configuration/configure_cpu.ui
@@ -150,6 +150,18 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QCheckBox" name="cpuopt_unsafe_ignore_global_monitor">
+ <property name="toolTip">
+ <string>
+ &lt;div&gt;This option improves speed by relying only on the semantics of cmpxchg to ensure safety of exclusive access instructions. Please note this may result in deadlocks and other race conditions.&lt;/div&gt;
+ </string>
+ </property>
+ <property name="text">
+ <string>Ignore global monitor</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
diff --git a/src/yuzu/configuration/configure_cpu_debug.cpp b/src/yuzu/configuration/configure_cpu_debug.cpp
index 05a90963d..616a0be75 100644
--- a/src/yuzu/configuration/configure_cpu_debug.cpp
+++ b/src/yuzu/configuration/configure_cpu_debug.cpp
@@ -44,6 +44,12 @@ void ConfigureCpuDebug::SetConfiguration() {
Settings::values.cpuopt_reduce_misalign_checks.GetValue());
ui->cpuopt_fastmem->setEnabled(runtime_lock);
ui->cpuopt_fastmem->setChecked(Settings::values.cpuopt_fastmem.GetValue());
+ ui->cpuopt_fastmem_exclusives->setEnabled(runtime_lock);
+ ui->cpuopt_fastmem_exclusives->setChecked(
+ Settings::values.cpuopt_fastmem_exclusives.GetValue());
+ ui->cpuopt_recompile_exclusives->setEnabled(runtime_lock);
+ ui->cpuopt_recompile_exclusives->setChecked(
+ Settings::values.cpuopt_recompile_exclusives.GetValue());
}
void ConfigureCpuDebug::ApplyConfiguration() {
@@ -56,6 +62,8 @@ void ConfigureCpuDebug::ApplyConfiguration() {
Settings::values.cpuopt_misc_ir = ui->cpuopt_misc_ir->isChecked();
Settings::values.cpuopt_reduce_misalign_checks = ui->cpuopt_reduce_misalign_checks->isChecked();
Settings::values.cpuopt_fastmem = ui->cpuopt_fastmem->isChecked();
+ Settings::values.cpuopt_fastmem_exclusives = ui->cpuopt_fastmem_exclusives->isChecked();
+ Settings::values.cpuopt_recompile_exclusives = ui->cpuopt_recompile_exclusives->isChecked();
}
void ConfigureCpuDebug::changeEvent(QEvent* event) {
diff --git a/src/yuzu/configuration/configure_cpu_debug.ui b/src/yuzu/configuration/configure_cpu_debug.ui
index 6e635bb2f..2bc268810 100644
--- a/src/yuzu/configuration/configure_cpu_debug.ui
+++ b/src/yuzu/configuration/configure_cpu_debug.ui
@@ -144,7 +144,34 @@
</string>
</property>
<property name="text">
- <string>Enable Host MMU Emulation</string>
+ <string>Enable Host MMU Emulation (general memory instructions)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="cpuopt_fastmem_exclusives">
+ <property name="toolTip">
+ <string>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;This optimization speeds up exclusive memory accesses by the guest program.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Disabling this forces all exclusive memory accesses to use Software MMU Emulation.&lt;/div&gt;
+ </string>
+ </property>
+ <property name="text">
+ <string>Enable Host MMU Emulation (exclusive memory instructions)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="cpuopt_recompile_exclusives">
+ <property name="toolTip">
+ <string>
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;This optimization speeds up exclusive memory accesses by the guest program.&lt;/div&gt;
+ &lt;div style=&quot;white-space: nowrap&quot;&gt;Enabling it reduces the overhead of fastmem failure of exclusive memory accesses.&lt;/div&gt;
+ </string>
+ </property>
+ <property name="text">
+ <string>Enable recompilation of exclusive memory instructions</string>
</property>
</widget>
</item>
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index 566879317..08d5444ec 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -42,10 +42,14 @@ void ConfigureGeneral::SetConfiguration() {
ui->use_multi_core->setEnabled(runtime_lock);
ui->use_multi_core->setChecked(Settings::values.use_multi_core.GetValue());
+ ui->use_extended_memory_layout->setEnabled(runtime_lock);
+ ui->use_extended_memory_layout->setChecked(
+ Settings::values.use_extended_memory_layout.GetValue());
ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing.GetValue());
ui->toggle_user_on_boot->setChecked(UISettings::values.select_user_on_boot.GetValue());
ui->toggle_background_pause->setChecked(UISettings::values.pause_when_in_background.GetValue());
+ ui->toggle_background_mute->setChecked(UISettings::values.mute_when_in_background.GetValue());
ui->toggle_hide_mouse->setChecked(UISettings::values.hide_mouse.GetValue());
ui->toggle_speed_limit->setChecked(Settings::values.use_speed_limit.GetValue());
@@ -90,11 +94,15 @@ void ConfigureGeneral::ResetDefaults() {
void ConfigureGeneral::ApplyConfiguration() {
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_multi_core, ui->use_multi_core,
use_multi_core);
+ ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_extended_memory_layout,
+ ui->use_extended_memory_layout,
+ use_extended_memory_layout);
if (Settings::IsConfiguringGlobal()) {
UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
UISettings::values.select_user_on_boot = ui->toggle_user_on_boot->isChecked();
UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked();
+ UISettings::values.mute_when_in_background = ui->toggle_background_mute->isChecked();
UISettings::values.hide_mouse = ui->toggle_hide_mouse->isChecked();
Settings::values.fps_cap.SetValue(ui->fps_cap->value());
@@ -158,6 +166,9 @@ void ConfigureGeneral::SetupPerGameUI() {
Settings::values.use_speed_limit, use_speed_limit);
ConfigurationShared::SetColoredTristate(ui->use_multi_core, Settings::values.use_multi_core,
use_multi_core);
+ ConfigurationShared::SetColoredTristate(ui->use_extended_memory_layout,
+ Settings::values.use_extended_memory_layout,
+ use_extended_memory_layout);
connect(ui->toggle_speed_limit, &QCheckBox::clicked, ui->speed_limit, [this]() {
ui->speed_limit->setEnabled(ui->toggle_speed_limit->isChecked() &&
diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h
index 85c1dd4a8..b6f3bb5ed 100644
--- a/src/yuzu/configuration/configure_general.h
+++ b/src/yuzu/configuration/configure_general.h
@@ -48,6 +48,7 @@ private:
ConfigurationShared::CheckState use_speed_limit;
ConfigurationShared::CheckState use_multi_core;
+ ConfigurationShared::CheckState use_extended_memory_layout;
const Core::System& system;
};
diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui
index 112dc72b3..c6ef2ab70 100644
--- a/src/yuzu/configuration/configure_general.ui
+++ b/src/yuzu/configuration/configure_general.ui
@@ -143,6 +143,13 @@
</widget>
</item>
<item>
+ <widget class="QCheckBox" name="use_extended_memory_layout">
+ <property name="text">
+ <string>Extended memory layout (6GB DRAM)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QCheckBox" name="toggle_check_exit">
<property name="text">
<string>Confirm exit while emulation is running</string>
@@ -164,6 +171,13 @@
</widget>
</item>
<item>
+ <widget class="QCheckBox" name="toggle_background_mute">
+ <property name="text">
+ <string>Mute audio when in background</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QCheckBox" name="toggle_hide_mouse">
<property name="text">
<string>Hide mouse on inactivity</string>
diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp
index d53179dbb..7c5776189 100644
--- a/src/yuzu/configuration/configure_input.cpp
+++ b/src/yuzu/configuration/configure_input.cpp
@@ -164,7 +164,7 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
});
connect(ui->vibrationButton, &QPushButton::clicked,
- [this] { CallConfigureDialog<ConfigureVibration>(*this); });
+ [this, &hid_core] { CallConfigureDialog<ConfigureVibration>(*this, hid_core); });
connect(ui->motionButton, &QPushButton::clicked, [this, input_subsystem] {
CallConfigureDialog<ConfigureMotionTouch>(*this, input_subsystem);
diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp
index cc0534907..0aa4ac3e4 100644
--- a/src/yuzu/configuration/configure_input_player.cpp
+++ b/src/yuzu/configuration/configure_input_player.cpp
@@ -488,6 +488,32 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i
emulated_controller->SetStickParam(analog_id, {});
analog_map_buttons[analog_id][sub_button_id]->setText(tr("[not set]"));
});
+ context_menu.addAction(tr("Center axis"), [&] {
+ const auto stick_value =
+ emulated_controller->GetSticksValues()[analog_id];
+ const float offset_x = stick_value.x.properties.offset;
+ const float offset_y = stick_value.y.properties.offset;
+ float raw_value_x = stick_value.x.raw_value;
+ float raw_value_y = stick_value.y.raw_value;
+ // See Core::HID::SanitizeStick() to obtain the original raw axis value
+ if (std::abs(offset_x) < 0.5f) {
+ if (raw_value_x > 0) {
+ raw_value_x *= 1 + offset_x;
+ } else {
+ raw_value_x *= 1 - offset_x;
+ }
+ }
+ if (std::abs(offset_x) < 0.5f) {
+ if (raw_value_y > 0) {
+ raw_value_y *= 1 + offset_y;
+ } else {
+ raw_value_y *= 1 - offset_y;
+ }
+ }
+ param.Set("offset_x", -raw_value_x + offset_x);
+ param.Set("offset_y", -raw_value_y + offset_y);
+ emulated_controller->SetStickParam(analog_id, param);
+ });
context_menu.addAction(tr("Invert axis"), [&] {
if (sub_button_id == 2 || sub_button_id == 3) {
const bool invert_value = param.Get("invert_x", "+") == "-";
@@ -1306,6 +1332,9 @@ void ConfigureInputPlayer::HandleClick(
QPushButton* button, std::size_t button_id,
std::function<void(const Common::ParamPackage&)> new_input_setter,
InputCommon::Polling::InputType type) {
+ if (timeout_timer->isActive()) {
+ return;
+ }
if (button == ui->buttonMotionLeft || button == ui->buttonMotionRight) {
button->setText(tr("Shake!"));
} else {
diff --git a/src/yuzu/configuration/configure_input_player_widget.cpp b/src/yuzu/configuration/configure_input_player_widget.cpp
index 6630321cb..fb168b2ca 100644
--- a/src/yuzu/configuration/configure_input_player_widget.cpp
+++ b/src/yuzu/configuration/configure_input_player_widget.cpp
@@ -70,7 +70,6 @@ void PlayerControlPreview::UpdateColors() {
colors.slider_arrow = QColor(14, 15, 18);
colors.font2 = QColor(255, 255, 255);
colors.indicator = QColor(170, 238, 255);
- colors.indicator2 = QColor(100, 255, 100);
colors.deadzone = QColor(204, 136, 136);
colors.slider_button = colors.button;
}
@@ -88,7 +87,6 @@ void PlayerControlPreview::UpdateColors() {
colors.slider_arrow = QColor(65, 68, 73);
colors.font2 = QColor(0, 0, 0);
colors.indicator = QColor(0, 0, 200);
- colors.indicator2 = QColor(0, 150, 0);
colors.deadzone = QColor(170, 0, 0);
colors.slider_button = QColor(153, 149, 149);
}
@@ -101,6 +99,8 @@ void PlayerControlPreview::UpdateColors() {
colors.font = QColor(255, 255, 255);
colors.led_on = QColor(255, 255, 0);
colors.led_off = QColor(170, 238, 255);
+ colors.indicator2 = QColor(59, 165, 93);
+ colors.charging = QColor(250, 168, 26);
colors.left = colors.primary;
colors.right = colors.primary;
@@ -357,7 +357,7 @@ void PlayerControlPreview::DrawLeftController(QPainter& p, const QPointF center)
DrawCircle(p, center + QPoint(26, 71), 5);
// Draw battery
- DrawBattery(p, center + QPoint(-170, -140),
+ DrawBattery(p, center + QPoint(-160, -140),
battery_values[Core::HID::EmulatedDeviceIndex::LeftIndex]);
}
@@ -484,7 +484,7 @@ void PlayerControlPreview::DrawRightController(QPainter& p, const QPointF center
DrawSymbol(p, center + QPoint(-26, 66), Symbol::House, 5);
// Draw battery
- DrawBattery(p, center + QPoint(110, -140),
+ DrawBattery(p, center + QPoint(120, -140),
battery_values[Core::HID::EmulatedDeviceIndex::RightIndex]);
}
@@ -621,9 +621,9 @@ void PlayerControlPreview::DrawDualController(QPainter& p, const QPointF center)
DrawSymbol(p, center + QPoint(50, 60), Symbol::House, 4.2f);
// Draw battery
- DrawBattery(p, center + QPoint(-100, -160),
+ DrawBattery(p, center + QPoint(-200, -10),
battery_values[Core::HID::EmulatedDeviceIndex::LeftIndex]);
- DrawBattery(p, center + QPoint(40, -160),
+ DrawBattery(p, center + QPoint(160, -10),
battery_values[Core::HID::EmulatedDeviceIndex::RightIndex]);
}
@@ -694,12 +694,12 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
// ZL and ZR buttons
p.setPen(colors.outline);
- DrawTriggerButton(p, center + QPoint(-210, -130), Direction::Left, button_values[ZL]);
- DrawTriggerButton(p, center + QPoint(210, -130), Direction::Right, button_values[ZR]);
+ DrawTriggerButton(p, center + QPoint(-210, -120), Direction::Left, button_values[ZL]);
+ DrawTriggerButton(p, center + QPoint(210, -120), Direction::Right, button_values[ZR]);
p.setPen(colors.transparent);
p.setBrush(colors.font);
- DrawSymbol(p, center + QPoint(-210, -130), Symbol::ZL, 1.5f);
- DrawSymbol(p, center + QPoint(210, -130), Symbol::ZR, 1.5f);
+ DrawSymbol(p, center + QPoint(-210, -120), Symbol::ZL, 1.5f);
+ DrawSymbol(p, center + QPoint(210, -120), Symbol::ZR, 1.5f);
// Minus and Plus button
p.setPen(colors.outline);
@@ -725,9 +725,9 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
DrawSymbol(p, center + QPoint(161, 37), Symbol::House, 2.75f);
// Draw battery
- DrawBattery(p, center + QPoint(-200, 110),
+ DrawBattery(p, center + QPoint(-188, 95),
battery_values[Core::HID::EmulatedDeviceIndex::LeftIndex]);
- DrawBattery(p, center + QPoint(130, 110),
+ DrawBattery(p, center + QPoint(150, 95),
battery_values[Core::HID::EmulatedDeviceIndex::RightIndex]);
}
@@ -781,12 +781,12 @@ void PlayerControlPreview::DrawProController(QPainter& p, const QPointF center)
// ZL and ZR buttons
p.setPen(colors.outline);
- DrawTriggerButton(p, center + QPoint(-210, -130), Direction::Left, button_values[ZL]);
- DrawTriggerButton(p, center + QPoint(210, -130), Direction::Right, button_values[ZR]);
+ DrawTriggerButton(p, center + QPoint(-210, -120), Direction::Left, button_values[ZL]);
+ DrawTriggerButton(p, center + QPoint(210, -120), Direction::Right, button_values[ZR]);
p.setPen(colors.transparent);
p.setBrush(colors.font);
- DrawSymbol(p, center + QPoint(-210, -130), Symbol::ZL, 1.5f);
- DrawSymbol(p, center + QPoint(210, -130), Symbol::ZR, 1.5f);
+ DrawSymbol(p, center + QPoint(-210, -120), Symbol::ZL, 1.5f);
+ DrawSymbol(p, center + QPoint(210, -120), Symbol::ZR, 1.5f);
// Minus and Plus buttons
p.setPen(colors.outline);
@@ -818,7 +818,7 @@ void PlayerControlPreview::DrawProController(QPainter& p, const QPointF center)
DrawSymbol(p, center + QPoint(29, -56), Symbol::House, 3.9f);
// Draw battery
- DrawBattery(p, center + QPoint(-30, -160),
+ DrawBattery(p, center + QPoint(-20, -160),
battery_values[Core::HID::EmulatedDeviceIndex::LeftIndex]);
}
@@ -875,7 +875,7 @@ void PlayerControlPreview::DrawGCController(QPainter& p, const QPointF center) {
DrawCircleButton(p, center + QPoint(0, -44), button_values[Plus], 8);
// Draw battery
- DrawBattery(p, center + QPoint(-30, -165),
+ DrawBattery(p, center + QPoint(-20, 110),
battery_values[Core::HID::EmulatedDeviceIndex::LeftIndex]);
}
@@ -1030,6 +1030,10 @@ constexpr std::array<float, 30 * 2> symbol_c = {
-2.37f, 5.64f, -0.65f, 6.44f, 1.25f, 6.47f, 3.06f, 5.89f, 4.63f, 4.92f, 4.63f, 6.83f,
};
+constexpr std::array<float, 6 * 2> symbol_charging = {
+ 6.5f, -1.0f, 1.0f, -1.0f, 1.0f, -3.0f, -6.5f, 1.0f, -1.0f, 1.0f, -1.0f, 3.0f,
+};
+
constexpr std::array<float, 12 * 2> house = {
-1.3f, 0.0f, -0.93f, 0.0f, -0.93f, 1.15f, 0.93f, 1.15f, 0.93f, 0.0f, 1.3f, 0.0f,
0.0f, -1.2f, -1.3f, 0.0f, -0.43f, 0.0f, -0.43f, .73f, 0.43f, .73f, 0.43f, 0.0f,
@@ -2674,36 +2678,43 @@ void PlayerControlPreview::DrawBattery(QPainter& p, QPointF center,
if (battery == Common::Input::BatteryLevel::None) {
return;
}
- p.setPen(colors.outline);
+ // Draw outline
+ p.setPen(QPen(colors.button, 5));
+ p.setBrush(colors.transparent);
+ p.drawRoundedRect(center.x(), center.y(), 34, 16, 2, 2);
+
+ p.setPen(QPen(colors.button, 3));
+ p.drawRect(center.x() + 35, center.y() + 4.5f, 4, 7);
+
+ // Draw Battery shape
+ p.setPen(QPen(colors.indicator2, 3));
p.setBrush(colors.transparent);
- p.drawRect(center.x(), center.y(), 56, 20);
- p.drawRect(center.x() + 56, center.y() + 6, 3, 8);
- p.setBrush(colors.deadzone);
+ p.drawRoundedRect(center.x(), center.y(), 34, 16, 2, 2);
+
+ p.setPen(QPen(colors.indicator2, 1));
+ p.setBrush(colors.indicator2);
+ p.drawRect(center.x() + 35, center.y() + 4.5f, 4, 7);
switch (battery) {
case Common::Input::BatteryLevel::Charging:
- p.setBrush(colors.indicator2);
- p.drawText(center + QPoint(2, 14), tr("Charging"));
+ p.drawRect(center.x(), center.y(), 34, 16);
+ p.setPen(colors.slider);
+ p.setBrush(colors.charging);
+ DrawSymbol(p, center + QPointF(17.0f, 8.0f), Symbol::Charging, 2.1f);
break;
case Common::Input::BatteryLevel::Full:
- p.drawRect(center.x() + 42, center.y(), 14, 20);
- p.drawRect(center.x() + 28, center.y(), 14, 20);
- p.drawRect(center.x() + 14, center.y(), 14, 20);
- p.drawRect(center.x(), center.y(), 14, 20);
+ p.drawRect(center.x(), center.y(), 34, 16);
break;
case Common::Input::BatteryLevel::Medium:
- p.drawRect(center.x() + 28, center.y(), 14, 20);
- p.drawRect(center.x() + 14, center.y(), 14, 20);
- p.drawRect(center.x(), center.y(), 14, 20);
+ p.drawRect(center.x(), center.y(), 25, 16);
break;
case Common::Input::BatteryLevel::Low:
- p.drawRect(center.x() + 14, center.y(), 14, 20);
- p.drawRect(center.x(), center.y(), 14, 20);
+ p.drawRect(center.x(), center.y(), 17, 16);
break;
case Common::Input::BatteryLevel::Critical:
- p.drawRect(center.x(), center.y(), 14, 20);
+ p.drawRect(center.x(), center.y(), 6, 16);
break;
case Common::Input::BatteryLevel::Empty:
- p.drawRect(center.x(), center.y(), 5, 20);
+ p.drawRect(center.x(), center.y(), 3, 16);
break;
default:
break;
@@ -2724,6 +2735,7 @@ void PlayerControlPreview::DrawSymbol(QPainter& p, const QPointF center, Symbol
std::array<QPointF, symbol_sl.size() / 2> sl_icon;
std::array<QPointF, symbol_zr.size() / 2> zr_icon;
std::array<QPointF, symbol_sr.size() / 2> sr_icon;
+ std::array<QPointF, symbol_charging.size() / 2> charging_icon;
switch (symbol) {
case Symbol::House:
for (std::size_t point = 0; point < house.size() / 2; ++point) {
@@ -2809,6 +2821,13 @@ void PlayerControlPreview::DrawSymbol(QPainter& p, const QPointF center, Symbol
}
p.drawPolygon(sr_icon.data(), static_cast<int>(sr_icon.size()));
break;
+ case Symbol::Charging:
+ for (std::size_t point = 0; point < symbol_charging.size() / 2; ++point) {
+ charging_icon[point] = center + QPointF(symbol_charging[point * 2] * icon_size,
+ symbol_charging[point * 2 + 1] * icon_size);
+ }
+ p.drawPolygon(charging_icon.data(), static_cast<int>(charging_icon.size()));
+ break;
}
}
diff --git a/src/yuzu/configuration/configure_input_player_widget.h b/src/yuzu/configuration/configure_input_player_widget.h
index 4cd5c3be0..3582ef77a 100644
--- a/src/yuzu/configuration/configure_input_player_widget.h
+++ b/src/yuzu/configuration/configure_input_player_widget.h
@@ -72,6 +72,7 @@ private:
ZL,
ZR,
SR,
+ Charging,
};
struct ColorMapping {
@@ -94,6 +95,7 @@ private:
QColor slider_button{};
QColor slider_arrow{};
QColor deadzone{};
+ QColor charging{};
};
void UpdateColors();
diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp
index 78b6374c0..d9f6dee4e 100644
--- a/src/yuzu/configuration/configure_profile_manager.cpp
+++ b/src/yuzu/configuration/configure_profile_manager.cpp
@@ -33,10 +33,10 @@ constexpr std::array<u8, 107> backup_jpeg{
0x01, 0x01, 0x00, 0x00, 0x3f, 0x00, 0xd2, 0xcf, 0x20, 0xff, 0xd9,
};
-QString GetImagePath(Common::UUID uuid) {
+QString GetImagePath(const Common::UUID& uuid) {
const auto path =
Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir) /
- fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormatSwitch());
+ fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString());
return QString::fromStdString(Common::FS::PathToUTF8String(path));
}
@@ -55,10 +55,10 @@ QString FormatUserEntryText(const QString& username, Common::UUID uuid) {
return ConfigureProfileManager::tr("%1\n%2",
"%1 is the profile username, %2 is the formatted UUID (e.g. "
"00112233-4455-6677-8899-AABBCCDDEEFF))")
- .arg(username, QString::fromStdString(uuid.FormatSwitch()));
+ .arg(username, QString::fromStdString(uuid.FormattedString()));
}
-QPixmap GetIcon(Common::UUID uuid) {
+QPixmap GetIcon(const Common::UUID& uuid) {
QPixmap icon{GetImagePath(uuid)};
if (!icon) {
@@ -200,7 +200,7 @@ void ConfigureProfileManager::AddUser() {
return;
}
- const auto uuid = Common::UUID::Generate();
+ const auto uuid = Common::UUID::MakeRandom();
profile_manager->CreateNewUser(uuid, username.toStdString());
item_model->appendRow(new QStandardItem{GetIcon(uuid), FormatUserEntryText(username, uuid)});
diff --git a/src/yuzu/configuration/configure_touch_from_button.cpp b/src/yuzu/configuration/configure_touch_from_button.cpp
index bde0a08c4..211a00217 100644
--- a/src/yuzu/configuration/configure_touch_from_button.cpp
+++ b/src/yuzu/configuration/configure_touch_from_button.cpp
@@ -227,6 +227,9 @@ void ConfigureTouchFromButton::RenameMapping() {
}
void ConfigureTouchFromButton::GetButtonInput(const int row_index, const bool is_new) {
+ if (timeout_timer->isActive()) {
+ return;
+ }
binding_list_model->item(row_index, 0)->setText(tr("[press key]"));
input_setter = [this, row_index, is_new](const Common::ParamPackage& params,
diff --git a/src/yuzu/configuration/configure_vibration.cpp b/src/yuzu/configuration/configure_vibration.cpp
index adce04b27..779b6401c 100644
--- a/src/yuzu/configuration/configure_vibration.cpp
+++ b/src/yuzu/configuration/configure_vibration.cpp
@@ -9,11 +9,14 @@
#include "common/param_package.h"
#include "common/settings.h"
+#include "core/hid/emulated_controller.h"
+#include "core/hid/hid_core.h"
+#include "core/hid/hid_types.h"
#include "ui_configure_vibration.h"
#include "yuzu/configuration/configure_vibration.h"
-ConfigureVibration::ConfigureVibration(QWidget* parent)
- : QDialog(parent), ui(std::make_unique<Ui::ConfigureVibration>()) {
+ConfigureVibration::ConfigureVibration(QWidget* parent, Core::HID::HIDCore& hid_core_)
+ : QDialog(parent), ui(std::make_unique<Ui::ConfigureVibration>()), hid_core{hid_core_} {
ui->setupUi(this);
vibration_groupboxes = {
@@ -31,6 +34,13 @@ ConfigureVibration::ConfigureVibration(QWidget* parent)
const auto& players = Settings::values.players.GetValue();
for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
+ auto controller = hid_core.GetEmulatedControllerByIndex(i);
+ Core::HID::ControllerUpdateCallback engine_callback{
+ .on_change = [this,
+ i](Core::HID::ControllerTriggerType type) { VibrateController(type, i); },
+ .is_npad_service = false,
+ };
+ controller_callback_key[i] = controller->SetCallback(engine_callback);
vibration_groupboxes[i]->setChecked(players[i].vibration_enabled);
vibration_spinboxes[i]->setValue(players[i].vibration_strength);
}
@@ -45,7 +55,14 @@ ConfigureVibration::ConfigureVibration(QWidget* parent)
RetranslateUI();
}
-ConfigureVibration::~ConfigureVibration() = default;
+ConfigureVibration::~ConfigureVibration() {
+ StopVibrations();
+
+ for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
+ auto controller = hid_core.GetEmulatedControllerByIndex(i);
+ controller->DeleteCallback(controller_callback_key[i]);
+ }
+};
void ConfigureVibration::ApplyConfiguration() {
auto& players = Settings::values.players.GetValue();
@@ -70,3 +87,54 @@ void ConfigureVibration::changeEvent(QEvent* event) {
void ConfigureVibration::RetranslateUI() {
ui->retranslateUi(this);
}
+
+void ConfigureVibration::VibrateController(Core::HID::ControllerTriggerType type,
+ std::size_t player_index) {
+ if (type != Core::HID::ControllerTriggerType::Button) {
+ return;
+ }
+
+ auto& player = Settings::values.players.GetValue()[player_index];
+ auto controller = hid_core.GetEmulatedControllerByIndex(player_index);
+ const int vibration_strenght = vibration_spinboxes[player_index]->value();
+ const auto& buttons = controller->GetButtonsValues();
+
+ bool button_is_pressed = false;
+ for (std::size_t i = 0; i < buttons.size(); ++i) {
+ if (buttons[i].value) {
+ button_is_pressed = true;
+ break;
+ }
+ }
+
+ if (!button_is_pressed) {
+ StopVibrations();
+ return;
+ }
+
+ const int old_vibration_enabled = player.vibration_enabled;
+ const bool old_vibration_strenght = player.vibration_strength;
+ player.vibration_enabled = true;
+ player.vibration_strength = vibration_strenght;
+
+ const Core::HID::VibrationValue vibration{
+ .low_amplitude = 1.0f,
+ .low_frequency = 160.0f,
+ .high_amplitude = 1.0f,
+ .high_frequency = 320.0f,
+ };
+ controller->SetVibration(0, vibration);
+ controller->SetVibration(1, vibration);
+
+ // Restore previous values
+ player.vibration_enabled = old_vibration_enabled;
+ player.vibration_strength = old_vibration_strenght;
+}
+
+void ConfigureVibration::StopVibrations() {
+ for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
+ auto controller = hid_core.GetEmulatedControllerByIndex(i);
+ controller->SetVibration(0, Core::HID::DEFAULT_VIBRATION_VALUE);
+ controller->SetVibration(1, Core::HID::DEFAULT_VIBRATION_VALUE);
+ }
+}
diff --git a/src/yuzu/configuration/configure_vibration.h b/src/yuzu/configuration/configure_vibration.h
index 37bbc2653..50b8195fa 100644
--- a/src/yuzu/configuration/configure_vibration.h
+++ b/src/yuzu/configuration/configure_vibration.h
@@ -15,11 +15,16 @@ namespace Ui {
class ConfigureVibration;
}
+namespace Core::HID {
+enum class ControllerTriggerType;
+class HIDCore;
+} // namespace Core::HID
+
class ConfigureVibration : public QDialog {
Q_OBJECT
public:
- explicit ConfigureVibration(QWidget* parent);
+ explicit ConfigureVibration(QWidget* parent, Core::HID::HIDCore& hid_core_);
~ConfigureVibration() override;
void ApplyConfiguration();
@@ -27,14 +32,21 @@ public:
private:
void changeEvent(QEvent* event) override;
void RetranslateUI();
+ void VibrateController(Core::HID::ControllerTriggerType type, std::size_t player_index);
+ void StopVibrations();
std::unique_ptr<Ui::ConfigureVibration> ui;
static constexpr std::size_t NUM_PLAYERS = 8;
- // Groupboxes encapsulating the vibration strength spinbox.
+ /// Groupboxes encapsulating the vibration strength spinbox.
std::array<QGroupBox*, NUM_PLAYERS> vibration_groupboxes;
- // Spinboxes representing the vibration strength percentage.
+ /// Spinboxes representing the vibration strength percentage.
std::array<QSpinBox*, NUM_PLAYERS> vibration_spinboxes;
+
+ /// Callback index to stop the controllers events
+ std::array<int, NUM_PLAYERS> controller_callback_key;
+
+ Core::HID::HIDCore& hid_core;
};
diff --git a/src/yuzu/configuration/configure_vibration.ui b/src/yuzu/configuration/configure_vibration.ui
index efdf317a9..447a18eb1 100644
--- a/src/yuzu/configuration/configure_vibration.ui
+++ b/src/yuzu/configuration/configure_vibration.ui
@@ -17,6 +17,13 @@
<string notr="true"/>
</property>
<layout class="QVBoxLayout">
+ <item row="0" column="0" colspan="4">
+ <widget class="QLabel" name="label_1">
+ <property name="text">
+ <string>Press any controller button to vibrate the controller.</string>
+ </property>
+ </widget>
+ </item>
<item>
<widget class="QGroupBox" name="vibrationStrengthGroup">
<property name="title">
diff --git a/src/yuzu/debugger/console.cpp b/src/yuzu/debugger/console.cpp
index f89ea8ea7..4b508b466 100644
--- a/src/yuzu/debugger/console.cpp
+++ b/src/yuzu/debugger/console.cpp
@@ -30,6 +30,7 @@ void ToggleConsole() {
freopen_s(&temp, "CONIN$", "r", stdin);
freopen_s(&temp, "CONOUT$", "w", stdout);
freopen_s(&temp, "CONOUT$", "w", stderr);
+ SetConsoleOutputCP(65001);
SetColorConsoleBackendEnabled(true);
}
} else {
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index d9e689d14..06774768d 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -25,6 +25,7 @@
#include "core/file_sys/vfs_real.h"
#include "core/frontend/applets/controller.h"
#include "core/frontend/applets/general_frontend.h"
+#include "core/frontend/applets/mii.h"
#include "core/frontend/applets/software_keyboard.h"
#include "core/hid/emulated_controller.h"
#include "core/hid/hid_core.h"
@@ -249,9 +250,9 @@ GMainWindow::GMainWindow()
#ifdef ARCHITECTURE_x86_64
const auto& caps = Common::GetCPUCaps();
std::string cpu_string = caps.cpu_string;
- if (caps.avx || caps.avx2 || caps.avx512) {
+ if (caps.avx || caps.avx2 || caps.avx512f) {
cpu_string += " | AVX";
- if (caps.avx512) {
+ if (caps.avx512f) {
cpu_string += "512";
} else if (caps.avx2) {
cpu_string += '2';
@@ -806,21 +807,8 @@ void GMainWindow::InitializeWidgets() {
filter_status_button = new QPushButton();
filter_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
filter_status_button->setFocusPolicy(Qt::NoFocus);
- connect(filter_status_button, &QPushButton::clicked, [&] {
- auto filter = Settings::values.scaling_filter.GetValue();
- if (filter == Settings::ScalingFilter::LastFilter) {
- filter = Settings::ScalingFilter::NearestNeighbor;
- } else {
- filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1);
- }
- if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&
- filter == Settings::ScalingFilter::Fsr) {
- filter = Settings::ScalingFilter::NearestNeighbor;
- }
- Settings::values.scaling_filter.SetValue(filter);
- filter_status_button->setChecked(true);
- UpdateFilterText();
- });
+ connect(filter_status_button, &QPushButton::clicked, this,
+ &GMainWindow::OnToggleAdaptingFilter);
auto filter = Settings::values.scaling_filter.GetValue();
if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&
filter == Settings::ScalingFilter::Fsr) {
@@ -835,25 +823,7 @@ void GMainWindow::InitializeWidgets() {
dock_status_button = new QPushButton();
dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));
dock_status_button->setFocusPolicy(Qt::NoFocus);
- connect(dock_status_button, &QPushButton::clicked, [&] {
- const bool is_docked = Settings::values.use_docked_mode.GetValue();
- auto* player_1 = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1);
- auto* handheld = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld);
-
- if (!is_docked && handheld->IsConnected()) {
- QMessageBox::warning(this, tr("Invalid config detected"),
- tr("Handheld controller can't be used on docked mode. Pro "
- "controller will be selected."));
- handheld->Disconnect();
- player_1->SetNpadStyleIndex(Core::HID::NpadStyleIndex::ProController);
- player_1->Connect();
- controller_dialog->refreshConfiguration();
- }
-
- Settings::values.use_docked_mode.SetValue(!is_docked);
- dock_status_button->setChecked(!is_docked);
- OnDockedModeChanged(is_docked, !is_docked, *system);
- });
+ connect(dock_status_button, &QPushButton::clicked, this, &GMainWindow::OnToggleDockedMode);
dock_status_button->setText(tr("DOCK"));
dock_status_button->setCheckable(true);
dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
@@ -863,22 +833,7 @@ void GMainWindow::InitializeWidgets() {
gpu_accuracy_button->setObjectName(QStringLiteral("GPUStatusBarButton"));
gpu_accuracy_button->setCheckable(true);
gpu_accuracy_button->setFocusPolicy(Qt::NoFocus);
- connect(gpu_accuracy_button, &QPushButton::clicked, [this] {
- switch (Settings::values.gpu_accuracy.GetValue()) {
- case Settings::GPUAccuracy::High: {
- Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::Normal);
- break;
- }
- case Settings::GPUAccuracy::Normal:
- case Settings::GPUAccuracy::Extreme:
- default: {
- Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::High);
- }
- }
-
- system->ApplySettings();
- UpdateGPUAccuracyButton();
- });
+ connect(gpu_accuracy_button, &QPushButton::clicked, this, &GMainWindow::OnToggleGpuAccuracy);
UpdateGPUAccuracyButton();
statusBar()->insertPermanentWidget(0, gpu_accuracy_button);
@@ -965,6 +920,7 @@ void GMainWindow::LinkActionShortcut(QAction* action, const QString& action_name
static const QString main_window = QStringLiteral("Main Window");
action->setShortcut(hotkey_registry.GetKeySequence(main_window, action_name));
action->setShortcutContext(hotkey_registry.GetShortcutContext(main_window, action_name));
+ action->setAutoRepeat(false);
this->addAction(action);
@@ -979,7 +935,7 @@ void GMainWindow::InitializeHotkeys() {
hotkey_registry.LoadHotkeys();
LinkActionShortcut(ui->action_Load_File, QStringLiteral("Load File"));
- LinkActionShortcut(ui->action_Load_Amiibo, QStringLiteral("Load Amiibo"));
+ LinkActionShortcut(ui->action_Load_Amiibo, QStringLiteral("Load/Remove Amiibo"));
LinkActionShortcut(ui->action_Exit, QStringLiteral("Exit yuzu"));
LinkActionShortcut(ui->action_Restart, QStringLiteral("Restart Emulation"));
LinkActionShortcut(ui->action_Pause, QStringLiteral("Continue/Pause Emulation"));
@@ -1008,12 +964,10 @@ void GMainWindow::InitializeHotkeys() {
ToggleFullscreen();
}
});
- connect_shortcut(QStringLiteral("Change Docked Mode"), [&] {
- Settings::values.use_docked_mode.SetValue(!Settings::values.use_docked_mode.GetValue());
- OnDockedModeChanged(!Settings::values.use_docked_mode.GetValue(),
- Settings::values.use_docked_mode.GetValue(), *system);
- dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue());
- });
+ connect_shortcut(QStringLiteral("Change Adapting Filter"),
+ &GMainWindow::OnToggleAdaptingFilter);
+ connect_shortcut(QStringLiteral("Change Docked Mode"), &GMainWindow::OnToggleDockedMode);
+ connect_shortcut(QStringLiteral("Change GPU Accuracy"), &GMainWindow::OnToggleGpuAccuracy);
connect_shortcut(QStringLiteral("Audio Mute/Unmute"),
[] { Settings::values.audio_muted = !Settings::values.audio_muted; });
connect_shortcut(QStringLiteral("Audio Volume Down"), [] {
@@ -1051,8 +1005,10 @@ void GMainWindow::SetDefaultUIGeometry() {
}
void GMainWindow::RestoreUIState() {
+ setWindowFlags(windowFlags() & ~Qt::FramelessWindowHint);
restoreGeometry(UISettings::values.geometry);
restoreState(UISettings::values.state);
+ render_window->setWindowFlags(render_window->windowFlags() & ~Qt::FramelessWindowHint);
render_window->restoreGeometry(UISettings::values.renderwindow_geometry);
#if MICROPROFILE_ENABLED
microProfileDialog->restoreGeometry(UISettings::values.microprofile_geometry);
@@ -1079,14 +1035,14 @@ void GMainWindow::RestoreUIState() {
}
void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
- if (!UISettings::values.pause_when_in_background) {
- return;
- }
if (state != Qt::ApplicationHidden && state != Qt::ApplicationInactive &&
state != Qt::ApplicationActive) {
LOG_DEBUG(Frontend, "ApplicationState unusual flag: {} ", state);
}
- if (emulation_running) {
+ if (!emulation_running) {
+ return;
+ }
+ if (UISettings::values.pause_when_in_background) {
if (emu_thread->IsRunning() &&
(state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
auto_paused = true;
@@ -1096,6 +1052,16 @@ void GMainWindow::OnAppFocusStateChanged(Qt::ApplicationState state) {
OnStartGame();
}
}
+ if (UISettings::values.mute_when_in_background) {
+ if (!Settings::values.audio_muted &&
+ (state & (Qt::ApplicationHidden | Qt::ApplicationInactive))) {
+ Settings::values.audio_muted = true;
+ auto_muted = true;
+ } else if (auto_muted && state == Qt::ApplicationActive) {
+ Settings::values.audio_muted = false;
+ auto_muted = false;
+ }
+ }
}
void GMainWindow::ConnectWidgetEvents() {
@@ -1320,6 +1286,7 @@ bool GMainWindow::LoadROM(const QString& filename, u64 program_id, std::size_t p
std::make_unique<QtControllerSelector>(*this), // Controller Selector
std::make_unique<QtErrorDisplay>(*this), // Error Display
nullptr, // Parental Controls
+ nullptr, // Mii editor
nullptr, // Photo Viewer
std::make_unique<QtProfileSelector>(*this), // Profile Selector
std::make_unique<QtSoftwareKeyboard>(*this), // Software Keyboard
@@ -1687,7 +1654,7 @@ void GMainWindow::OnGameListOpenFolder(u64 program_id, GameListOpenTarget target
const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath(
*system, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData,
- program_id, user_id->uuid, 0);
+ program_id, user_id->AsU128(), 0);
path = Common::FS::ConcatPathSafe(nand_dir, user_save_data_path);
} else {
@@ -2865,6 +2832,59 @@ void GMainWindow::OnTasReset() {
input_subsystem->GetTas()->Reset();
}
+void GMainWindow::OnToggleDockedMode() {
+ const bool is_docked = Settings::values.use_docked_mode.GetValue();
+ auto* player_1 = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1);
+ auto* handheld = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld);
+
+ if (!is_docked && handheld->IsConnected()) {
+ QMessageBox::warning(this, tr("Invalid config detected"),
+ tr("Handheld controller can't be used on docked mode. Pro "
+ "controller will be selected."));
+ handheld->Disconnect();
+ player_1->SetNpadStyleIndex(Core::HID::NpadStyleIndex::ProController);
+ player_1->Connect();
+ controller_dialog->refreshConfiguration();
+ }
+
+ Settings::values.use_docked_mode.SetValue(!is_docked);
+ dock_status_button->setChecked(!is_docked);
+ OnDockedModeChanged(is_docked, !is_docked, *system);
+}
+
+void GMainWindow::OnToggleGpuAccuracy() {
+ switch (Settings::values.gpu_accuracy.GetValue()) {
+ case Settings::GPUAccuracy::High: {
+ Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::Normal);
+ break;
+ }
+ case Settings::GPUAccuracy::Normal:
+ case Settings::GPUAccuracy::Extreme:
+ default: {
+ Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::High);
+ }
+ }
+
+ system->ApplySettings();
+ UpdateGPUAccuracyButton();
+}
+
+void GMainWindow::OnToggleAdaptingFilter() {
+ auto filter = Settings::values.scaling_filter.GetValue();
+ if (filter == Settings::ScalingFilter::LastFilter) {
+ filter = Settings::ScalingFilter::NearestNeighbor;
+ } else {
+ filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1);
+ }
+ if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&
+ filter == Settings::ScalingFilter::Fsr) {
+ filter = Settings::ScalingFilter::NearestNeighbor;
+ }
+ Settings::values.scaling_filter.SetValue(filter);
+ filter_status_button->setChecked(true);
+ UpdateFilterText();
+}
+
void GMainWindow::OnConfigurePerGame() {
const u64 title_id = system->GetCurrentProcessProgramID();
OpenPerGameConfiguration(title_id, game_path.toStdString());
@@ -2909,6 +2929,25 @@ void GMainWindow::OnLoadAmiibo() {
return;
}
+ Service::SM::ServiceManager& sm = system->ServiceManager();
+ auto nfc = sm.GetService<Service::NFP::Module::Interface>("nfp:user");
+ if (nfc == nullptr) {
+ QMessageBox::warning(this, tr("Error"), tr("The current game is not looking for amiibos"));
+ return;
+ }
+ const auto nfc_state = nfc->GetCurrentState();
+ if (nfc_state == Service::NFP::DeviceState::TagFound ||
+ nfc_state == Service::NFP::DeviceState::TagMounted) {
+ nfc->CloseAmiibo();
+ QMessageBox::warning(this, tr("Amiibo"), tr("The current amiibo has been removed"));
+ return;
+ }
+
+ if (nfc_state != Service::NFP::DeviceState::SearchingForTag) {
+ QMessageBox::warning(this, tr("Error"), tr("The current game is not looking for amiibos"));
+ return;
+ }
+
is_amiibo_file_select_active = true;
const QString extensions{QStringLiteral("*.bin")};
const QString file_filter = tr("Amiibo File (%1);; All Files (*.*)").arg(extensions);
@@ -2929,6 +2968,15 @@ void GMainWindow::LoadAmiibo(const QString& filename) {
return;
}
+ // Remove amiibo if one is connected
+ const auto nfc_state = nfc->GetCurrentState();
+ if (nfc_state == Service::NFP::DeviceState::TagFound ||
+ nfc_state == Service::NFP::DeviceState::TagMounted) {
+ nfc->CloseAmiibo();
+ QMessageBox::warning(this, tr("Amiibo"), tr("The current amiibo has been removed"));
+ return;
+ }
+
QFile nfc_file{filename};
if (!nfc_file.open(QIODevice::ReadOnly)) {
QMessageBox::warning(this, tr("Error opening Amiibo data file"),
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index ca4ab9af5..6a35b9e3d 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -284,6 +284,9 @@ private slots:
void OnTasStartStop();
void OnTasRecord();
void OnTasReset();
+ void OnToggleDockedMode();
+ void OnToggleGpuAccuracy();
+ void OnToggleAdaptingFilter();
void OnConfigurePerGame();
void OnLoadAmiibo();
void OnOpenYuzuFolder();
@@ -369,6 +372,7 @@ private:
QString game_path;
bool auto_paused = false;
+ bool auto_muted = false;
QTimer mouse_hide_timer;
// FS
diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui
index 5719b2ee4..6ab95b9a5 100644
--- a/src/yuzu/main.ui
+++ b/src/yuzu/main.ui
@@ -266,7 +266,7 @@
<bool>false</bool>
</property>
<property name="text">
- <string>Load &amp;Amiibo...</string>
+ <string>Load/Remove &amp;Amiibo...</string>
</property>
</action>
<action name="action_Report_Compatibility">
diff --git a/src/yuzu/uisettings.h b/src/yuzu/uisettings.h
index f7298ddad..06e8b46da 100644
--- a/src/yuzu/uisettings.h
+++ b/src/yuzu/uisettings.h
@@ -73,6 +73,7 @@ struct Values {
Settings::BasicSetting<bool> confirm_before_closing{true, "confirmClose"};
Settings::BasicSetting<bool> first_start{true, "firstStart"};
Settings::BasicSetting<bool> pause_when_in_background{false, "pauseWhenInBackground"};
+ Settings::BasicSetting<bool> mute_when_in_background{false, "muteWhenInBackground"};
Settings::BasicSetting<bool> hide_mouse{true, "hideInactiveMouse"};
Settings::BasicSetting<bool> select_user_on_boot{false, "select_user_on_boot"};
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 8e9c7d211..131bc2201 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <memory>
+#include <optional>
#include <sstream>
// Ignore -Wimplicit-fallthrough due to https://github.com/libsdl-org/SDL/issues/4307
@@ -29,11 +30,12 @@
namespace FS = Common::FS;
-Config::Config() {
- // TODO: Don't hardcode the path; let the frontend decide where to put the config files.
- sdl2_config_loc = FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "sdl2-config.ini";
- sdl2_config = std::make_unique<INIReader>(FS::PathToUTF8String(sdl2_config_loc));
+const std::filesystem::path default_config_path =
+ FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "sdl2-config.ini";
+Config::Config(std::optional<std::filesystem::path> config_path)
+ : sdl2_config_loc{config_path.value_or(default_config_path)},
+ sdl2_config{std::make_unique<INIReader>(FS::PathToUTF8String(sdl2_config_loc))} {
Reload();
}
@@ -66,6 +68,11 @@ static const std::array<int, Settings::NativeButton::NumButtons> default_buttons
SDL_SCANCODE_M, SDL_SCANCODE_N, SDL_SCANCODE_1, SDL_SCANCODE_2, SDL_SCANCODE_B,
};
+static const std::array<int, Settings::NativeMotion::NumMotions> default_motions = {
+ SDL_SCANCODE_7,
+ SDL_SCANCODE_8,
+};
+
static const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> default_analogs{{
{
SDL_SCANCODE_UP,
@@ -102,27 +109,42 @@ void Config::ReadSetting(const std::string& group, Settings::BasicSetting<Type>&
void Config::ReadValues() {
// Controls
for (std::size_t p = 0; p < Settings::values.players.GetValue().size(); ++p) {
+ auto& player = Settings::values.players.GetValue()[p];
+
const auto group = fmt::format("ControlsP{}", p);
for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
- Settings::values.players.GetValue()[p].buttons[i] =
+ player.buttons[i] =
sdl2_config->Get(group, Settings::NativeButton::mapping[i], default_param);
- if (Settings::values.players.GetValue()[p].buttons[i].empty())
- Settings::values.players.GetValue()[p].buttons[i] = default_param;
+ if (player.buttons[i].empty()) {
+ player.buttons[i] = default_param;
+ }
}
for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {
std::string default_param = InputCommon::GenerateAnalogParamFromKeys(
default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],
default_analogs[i][3], default_analogs[i][4], 0.5f);
- Settings::values.players.GetValue()[p].analogs[i] =
+ player.analogs[i] =
sdl2_config->Get(group, Settings::NativeAnalog::mapping[i], default_param);
- if (Settings::values.players.GetValue()[p].analogs[i].empty())
- Settings::values.players.GetValue()[p].analogs[i] = default_param;
+ if (player.analogs[i].empty()) {
+ player.analogs[i] = default_param;
+ }
+ }
+
+ for (int i = 0; i < Settings::NativeMotion::NumMotions; ++i) {
+ const std::string default_param =
+ InputCommon::GenerateKeyboardParam(default_motions[i]);
+ auto& player_motions = player.motions[i];
+
+ player_motions =
+ sdl2_config->Get(group, Settings::NativeMotion::mapping[i], default_param);
+ if (player_motions.empty()) {
+ player_motions = default_param;
+ }
}
- Settings::values.players.GetValue()[p].connected =
- sdl2_config->GetBoolean(group, "connected", false);
+ player.connected = sdl2_config->GetBoolean(group, "connected", false);
}
ReadSetting("ControlsGeneral", Settings::values.mouse_enabled);
@@ -246,6 +268,7 @@ void Config::ReadValues() {
// Core
ReadSetting("Core", Settings::values.use_multi_core);
+ ReadSetting("Core", Settings::values.use_extended_memory_layout);
// Cpu
ReadSetting("Cpu", Settings::values.cpu_accuracy);
@@ -259,11 +282,14 @@ void Config::ReadValues() {
ReadSetting("Cpu", Settings::values.cpuopt_misc_ir);
ReadSetting("Cpu", Settings::values.cpuopt_reduce_misalign_checks);
ReadSetting("Cpu", Settings::values.cpuopt_fastmem);
+ ReadSetting("Cpu", Settings::values.cpuopt_fastmem_exclusives);
+ ReadSetting("Cpu", Settings::values.cpuopt_recompile_exclusives);
ReadSetting("Cpu", Settings::values.cpuopt_unsafe_unfuse_fma);
ReadSetting("Cpu", Settings::values.cpuopt_unsafe_reduce_fp_error);
ReadSetting("Cpu", Settings::values.cpuopt_unsafe_ignore_standard_fpcr);
ReadSetting("Cpu", Settings::values.cpuopt_unsafe_inaccurate_nan);
ReadSetting("Cpu", Settings::values.cpuopt_unsafe_fastmem_check);
+ ReadSetting("Cpu", Settings::values.cpuopt_unsafe_ignore_global_monitor);
// Renderer
ReadSetting("Renderer", Settings::values.renderer_backend);
diff --git a/src/yuzu_cmd/config.h b/src/yuzu_cmd/config.h
index 1ee932be2..f61ba23ec 100644
--- a/src/yuzu_cmd/config.h
+++ b/src/yuzu_cmd/config.h
@@ -6,6 +6,7 @@
#include <filesystem>
#include <memory>
+#include <optional>
#include <string>
#include "common/settings.h"
@@ -13,14 +14,14 @@
class INIReader;
class Config {
- std::unique_ptr<INIReader> sdl2_config;
std::filesystem::path sdl2_config_loc;
+ std::unique_ptr<INIReader> sdl2_config;
bool LoadINI(const std::string& default_contents = "", bool retry = true);
void ReadValues();
public:
- Config();
+ explicit Config(std::optional<std::filesystem::path> config_path);
~Config();
void Reload();
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index 6d613bf7a..34782c378 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -124,7 +124,11 @@ keyboard_enabled =
[Core]
# Whether to use multi-core for CPU emulation
# 0: Disabled, 1 (default): Enabled
-use_multi_core=
+use_multi_core =
+
+# Enable extended guest system memory layout (6GB DRAM)
+# 0 (default): Disabled, 1: Enabled
+use_extended_memory_layout =
[Cpu]
# Adjusts various optimizations.
@@ -174,6 +178,14 @@ cpuopt_reduce_misalign_checks =
# 0: Disabled, 1 (default): Enabled
cpuopt_fastmem =
+# Enable Host MMU Emulation for exclusive memory instructions (faster guest memory access)
+# 0: Disabled, 1 (default): Enabled
+cpuopt_fastmem_exclusives =
+
+# Enable fallback on failure of fastmem of exclusive memory instructions (faster guest memory access)
+# 0: Disabled, 1 (default): Enabled
+cpuopt_recompile_exclusives =
+
# Enable unfuse FMA (improve performance on CPUs without FMA)
# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
# 0: Disabled, 1 (default): Enabled
@@ -199,6 +211,11 @@ cpuopt_unsafe_inaccurate_nan =
# 0: Disabled, 1 (default): Enabled
cpuopt_unsafe_fastmem_check =
+# Enable faster exclusive instructions
+# Only enabled if cpu_accuracy is set to Unsafe. Automatically chosen with cpu_accuracy = Auto-select.
+# 0: Disabled, 1 (default): Enabled
+cpuopt_unsafe_ignore_global_monitor =
+
[Renderer]
# Which backend API to use.
# 0 (default): OpenGL, 1: Vulkan
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index b44ea0cc4..f6d563017 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -66,7 +66,8 @@ static void PrintHelp(const char* argv0) {
"-f, --fullscreen Start in fullscreen mode\n"
"-h, --help Display this help and exit\n"
"-v, --version Output version information and exit\n"
- "-p, --program Pass following string as arguments to executable\n";
+ "-p, --program Pass following string as arguments to executable\n"
+ "-c, --config Load the specified configuration file\n";
}
static void PrintVersion() {
@@ -78,7 +79,6 @@ int main(int argc, char** argv) {
Common::Log::Initialize();
Common::Log::SetColorConsoleBackendEnabled(true);
Common::DetachedTasks detached_tasks;
- Config config;
int option_index = 0;
#ifdef _WIN32
@@ -91,19 +91,24 @@ int main(int argc, char** argv) {
}
#endif
std::string filepath;
+ std::optional<std::string> config_path;
+ std::string program_args;
bool fullscreen = false;
static struct option long_options[] = {
+ // clang-format off
{"fullscreen", no_argument, 0, 'f'},
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{"program", optional_argument, 0, 'p'},
+ {"config", required_argument, 0, 'c'},
{0, 0, 0, 0},
+ // clang-format on
};
while (optind < argc) {
- int arg = getopt_long(argc, argv, "g:fhvp::", long_options, &option_index);
+ int arg = getopt_long(argc, argv, "g:fhvp::c:", long_options, &option_index);
if (arg != -1) {
switch (static_cast<char>(arg)) {
case 'f':
@@ -117,9 +122,12 @@ int main(int argc, char** argv) {
PrintVersion();
return 0;
case 'p':
- Settings::values.program_args = argv[optind];
+ program_args = argv[optind];
++optind;
break;
+ case 'c':
+ config_path = optarg;
+ break;
}
} else {
#ifdef _WIN32
@@ -131,6 +139,12 @@ int main(int argc, char** argv) {
}
}
+ Config config{config_path};
+
+ if (!program_args.empty()) {
+ Settings::values.program_args = program_args;
+ }
+
#ifdef _WIN32
LocalFree(argv_w);
#endif